Abstract
Identify the key drivers of brand equity for Galeries Lafayette based on a questionnaire mailed to 5000 customers and returned by 600 of themThis analysis was prepared by Francisco Arrieta and Jonathan Edwards.
# options(scipen=999) #prevent scientific notation
# options(scipen=-999) #encourage scientific notation
options(scipen=0) #encourage scientific notation neutral?# modelling
library(psych) #factor analysis tools (PAF PAF)
library(lavaan) #causal analysis
library(lm.beta) # add standarized regression coeffs
# stats
library(nortest) #Kolmogorov-Smirnov-Test
library(corrplot) #correlation matrix plot
library(olsrr) #VIF and Tolerance Values
library(pastecs) # provides function stat.desc
library(REdaS) #Bartelett's Test
# plotting & formatting
library(ggplot2) #better graphs
library(patchwork) # provides wrap_plots for multiplotting
# library(gridExtra) #provides multiplotting functionality
# library(ggpubr) #provides ggarrange for multiplotting (patchwork better though)
library(semPlot) #for visualization of path diagrams (SEM)
library(lavaanPlot) #for visualization of path diagrams (SEM)
# library(rcompanion) #Histogram and Normal Curve
library(kableExtra) #makes nice tables
# generic
library(dplyr) #useful data manip functions like arrange, distinct, rename etc included in fpp3
library(stringr) # provides string manip functions like str_split_fixed
library(Hmisc) #describe function that describes features of dataframes
library(data.table) # creating and manipulating datatables
library(knitr) #rmarkdown tools not sure why useful
library(parameters) #get model outputs in table form (good for making tabs)# kable table layout options
# do not display NAs and only 2 digits
opts <- options(knitr.kable.NA = '') #knitr.table.format = "latex"
# define table styling options
stable <- function(data, digits = 2, caption="") {
knitr::kable(data, digits=digits, caption=caption) |>
# kable_styling(c("striped", "condensed"))
kable_paper(full_width = T)
}f_AVE <- function(lambda, theta){
results <- data.frame()
# create lambda matrix with ones instead of std.all
ones <- lambda
ones[ones>0] <- 1
# a matrix with dimensions of lambda matrix but with lambdas replaced by thetas
theta_lb <- theta %*% ones
# calculate Average Variance Extracted (should be above .5)
AVE <- (t(lambda) %*% lambda) / (t(lambda) %*% lambda + t(theta_lb) %*% ones )
# replace all values satisfying condition with NaN for visibility
AVE_fail <- AVE
AVE_fail[AVE_fail>.5] <- NaN
# test result
if (length(AVE_fail[!is.na(AVE_fail)])>0){
results["Average Variance Extracted","Result"] <- "Fail"
} else {
results["Average Variance Extracted","Result"] <- "Pass"
}
kbl <- results |>
stable() |>
row_spec(which(results[,"Result"]=="Pass"), bold = T, color = "white", background = "#78BE20") |>
row_spec(which(results[,"Result"]=="Fail"), bold = T, color = "white", background = "red")
return(list(kbl,AVE,AVE_fail))
}f_bartlett <- function(data){
brt <- bart_spher(data)
test_selection = c("p.value","X2")
results <- data.frame(Value=as.numeric(brt[test_selection]))
rownames(results) <- c("pvalue", "chisq")
# bartlett's test (p-value < 0.5)
if (results["pvalue","Value"] < 0.05){
results["pvalue","Result"] <- "PASS"
} else {
results["pvalue","Result"] <- "FAIL"
}
kbl <- results |>
stable(3) |>
row_spec(which(results[,"Result"]=="PASS"), bold = T, color = "white", background = "#78BE20") |>
row_spec(which(results[,"Result"]=="FAIL"), bold = T, color = "white", background = "red")
return(list(kbl, brt))
}# communalities (exclude variables if < 0.3)
f_communality <- function(fit){
communality <- data.table("Item"=names(fit$communality),
"Communality"=as.numeric(fit$communality))
# Sort table
communality <- communality |>
setorder(cols = "Communality")
# Display table
kbl <- communality |>
stable(caption=paste0("Communality for function \"",fit$fn ,"\" with rotation \"", fit$rotation, "\" and ", fit$factors, " factors")) |>
row_spec(which(communality[,1]<.3), bold = T, color = "white", background = "red")
kbl
}# test to see if function calculates communality from loadings
f_communality_load <- function(fit){
communality_calc <- numeric()
for (i in 1:nrow(fit$loadings)){
# test communality calculation
variableloading = fit$loadings[i,] # loadings 1st variable
communality_calc[i] = sum(variableloading^2)
names(communality_calc)[i] <- names(fit$loadings[,1])[i]
# print(paste0("Communality for ", names(fit$loadings[,1])[i]," = ", communality_calc[i]))
}
communality <- data.table("Item"=names(communality_calc),
"Communality"=as.numeric(communality_calc))
# Sort table
communality <- communality |>
setorder(cols = "Communality")
# Display table
kbl <- communality |>
stable(caption=paste0("Test - Communality calculated from loadings for function \"",fit$fn ,"\" with rotation \"", fit$rotation, "\" and ", fit$factors, " factors")) |>
row_spec(which(communality[,1]<.3), bold = T, color = "white", background = "red")
kbl
}f_construct_corr <- function(psi){
results <- data.frame()
# correlations between constructs (factors...) should be lower than .7
# replace all values satisfying condition with Fail" for visibility
psi_fail <- psi
psi_fail[psi_fail<.7] <- NaN
# replace diagonal of psi matrix with NA
diag(psi_fail) <- NaN
# test result
if (length(psi_fail[!is.na(psi_fail)])>0){
results["Construct Correlations","Result"] <- "Fail"
} else {
results["Construct Correlations","Result"] <- "Pass"
}
kbl <- results |>
stable() |>
row_spec(which(results[,"Result"]=="Pass"), bold = T, color = "white", background = "#78BE20") |>
row_spec(which(results[,"Result"]=="Fail"), bold = T, color = "white", background = "red")
return(list(kbl,psi,psi_fail))
}f_construct_rel <- function(lambda, theta){
results <- data.frame()
# create lambda matrix with ones instead of std.all
ones <- lambda
ones[ones>0] <- 1
# a matrix with dimensions of lambda matrix but with lambdas replaced by thetas
theta_lb <- theta %*% ones
# calculate construct reliability (should be above .6)
constrrel <- (t(lambda) %*% ones)^2 / ((t(lambda) %*% ones)^2 + t(theta_lb) %*% ones )
# replace all values satisfying condition with NaN for visibility
constrrel_fail <- constrrel
constrrel_fail[constrrel_fail>.6] <- NaN
# test result
if (length(constrrel_fail[!is.na(constrrel_fail)])>0){
results["Construct Reliability","Result"] <- "Fail"
} else {
results["Construct Reliability","Result"] <- "Pass"
}
kbl <- results |>
stable() |>
row_spec(which(results[,"Result"]=="Pass"), bold = T, color = "white", background = "#78BE20") |>
row_spec(which(results[,"Result"]=="Fail"), bold = T, color = "white", background = "red")
return(list(kbl,constrrel,constrrel_fail))
}#plot correlation matrix adjusting parameters to see previously identified groupings
f_corr_matrix <- function(data){
corr_matrix <- cor(data)
corrplot(as.matrix(corr_matrix),
method = "color", #col = c("white","white","white","white","white", "lightgrey", "darkgrey", "black"),
order = "hclust", addrect = 10, rect.col="black", # rect.col="red",
addCoef.col = 'black', number.cex = .5,
tl.col ="black",
tl.cex = 0.80,
)
}f_eigenvalue_load <- function(fit){
Eigenvalue <- numeric()
for (i in 1:ncol(fit$loadings)){
# test eigenvalue calculation
factorloadings = fit$loadings[,i] # loadings 1st factor (default is nfactors = 1)
Eigenvalue[i] = sum(factorloadings^2)
# print(paste0("Eigenvalue factor ",names(fit$loadings[1,])[i] ," = ", Eigenvalue))
}
Eigenvalue
}f_factor_interp <- function(fit, labels, f_interp_list){
# create a dataframe which lists the variables in one column and in the other the factor on which they load most (the max)
Im_factor <- data.frame(
Variable = rownames(fit$loadings),
Loads_on = colnames(fit$loadings)[max.col(fit$loadings)]
)
# merge the labels data and the factor loaded on data
factor_interp <- merge(labels, Im_factor, by = 'Variable', all.x=T, all.y=F)
# select only the images (all variables containing "Im")
factor_interp <- factor_interp[grep("Im",factor_interp$Variable),]
# order by factor
setorder(factor_interp, Loads_on)
# add a column with the interpretations
factor_interp["Interpretation"] <- "excluded"
for (k in seq_along(f_interp_list)){
factor_interp["Interpretation"][factor_interp["Loads_on"]==names(f_interp_list[k])] <- f_interp_list[k]
}
kbl <- data.table(factor_interp[c("Variable", "Label_short", "Loads_on","Interpretation")]) |>
stable()
kbl
}f_fornell_larcker <- function(psi, AVE){
results <- data.frame()
#psi matrix squared
psi2 <- psi^2
# replace diagonal of psi matrix with AVE values
diag(psi2) <- diag(AVE)
# create matrix with columns filled with AVE
AVE_full <- AVE
AVE_full[is.na(AVE_full)] <- 0 #replace NAs with 0s
AVE_full <- AVE_full^0 %*% AVE_full # multiply a matrix full of ones with AVE_full to get columns filled with AVE
# AVE should be higher than squared correlations between constructs
# substract matrices any psi bigger than AVE will be negative
AVEpsi_fail <- AVE_full - psi2
# AVE_full - psi2
AVEpsi_fail[AVEpsi_fail >= 0] <- NaN
# test result
if (length(AVEpsi_fail[!is.na(AVEpsi_fail)])>0){
results["Fornell-Larcker Criteria","Result"] <- "Fail"
} else {
results["Fornell-Larcker Criteria","Result"] <- "Pass"
}
kbl <- results |>
stable() |>
row_spec(which(results[,"Result"]=="Pass"), bold = T, color = "white", background = "#78BE20") |>
row_spec(which(results[,"Result"]=="Fail"), bold = T, color = "white", background = "red")
return(list(kbl,psi2,AVEpsi_fail))
}f_global_fit_measures <- function(fit){
sum <- summary(fit, fit.measures=TRUE, standardized=TRUE)
test_selection = c("pvalue","chisq","cfi", "rmsea")
results <- data.frame(Value=sum$fit[test_selection])
#chi squared pvalue
if (results["pvalue","Value"] > 0.05){
results["pvalue","Result"] <- "PASS"
results["pvalue","Result_bool"] <- 2
} else {
results["pvalue","Result"] <- "FAIL"
results["pvalue","Result_bool"] <- 0
}
#chi squared
results["chisq","Result"] <- "-"
#CFI
if (results["cfi","Value"] < 0.9){
results["cfi","Result"] <- "Definitely reject the model"
results["cfi","Result_bool"] <- 0
} else if (results["cfi","Value"]>0.95) {
results["cfi","Result"] <- "Accept model"
results["cfi","Result_bool"] <- 2
} else {
results["cfi","Result"] <- "High under-rejection rate"
results["cfi","Result_bool"] <- 1
}
#RMSEA
if (results["rmsea","Value"] <= 0.05){
results["rmsea","Result"] <- "Good fit"
results["rmsea","Result_bool"] <- 2
} else if (results["rmsea","Value"] <= 0.08 | results["rmsea","Value"] > 0.05) {
results["rmsea","Result"] <- "Acceptable fit"
results["rmsea","Result_bool"] <- 1
} else if (results["rmsea","Value"] <= 0.1 | results["rmsea","Value"] > 0.08) {
results["rmsea","Result"] <- "Bad fit"
results["rmsea","Result_bool"] <- 0
} else {
results["rmsea","Result"] <- "Unacceptable fit"
results["rmsea","Result_bool"] <- 0
}
kbl <- results |>
stable(3) |>
row_spec(which(results[,"Result_bool"]==2), bold = T, color = "white", background = "#78BE20") |>
row_spec(which(results[,"Result_bool"]==1), bold = T, color = "white", background = "orange") |>
row_spec(which(results[,"Result_bool"]==0), bold = T, color = "white", background = "red")
return(list(remove_column(kbl, 4), sum))
}f_indic_rel <- function(lambda, theta){
results <- data.frame()
# create lambda matrix with ones instead of std.all
ones <- lambda
ones[ones>0] <- 1
# a matrix with dimensions of lambda matrix but with lambdas replaced by thetas
theta_lb <- theta %*% ones
# calculate indicator reliabilities (should be larger than 0.4)
indicrel <- lambda^2/(lambda^2 + theta_lb)
# indicrel
# replace all values satisfying condition with NaN for visibility
indicrel_fail <- indicrel
indicrel_fail[indicrel_fail>.4] <- NaN
# test result
if (length(indicrel_fail[!is.na(indicrel_fail)])>0){
results["Individual Item Reliability","Result"] <- "Fail"
} else {
results["Individual Item Reliability","Result"] <- "Pass"
}
kbl <- results |>
stable() |>
row_spec(which(results[,"Result"]=="Pass"), bold = T, color = "white", background = "#78BE20") |>
row_spec(which(results[,"Result"]=="Fail"), bold = T, color = "white", background = "red")
return(list(kbl,indicrel,indicrel_fail))
}f_kaiser <- function(fit){
#kaiser criterion (retain factors with eigenvalues >1)
fit_kaiser_nb <- length(which(fit$e.values > 1))
print(paste0("Kaiser number = ",fit_kaiser_nb))
}f_KMO <- function(data){
# KMO > 0.6
KMOTEST=KMOS(data_img_EFA)
# print(KMOTEST, sort=T)
KMO <- KMOTEST$KMO
results <- data.frame(Value=KMO)
rownames(results) <- "KMO"
# KMO > 0.6
if (results["KMO","Value"] > 0.6){
results["KMO","Result"] <- "PASS"
} else {
results["KMO","Result"] <- "FAIL"
}
kbl <- results |>
stable(3) |>
row_spec(which(results[,"Result"]=="PASS"), bold = T, color = "white", background = "#78BE20") |>
row_spec(which(results[,"Result"]=="FAIL"), bold = T, color = "white", background = "red")
return(kbl)
}# factor loading functions
f_loadings <- function(fit){
# print(fit$loadings, cutoff=0.3)
# print(print_html(model_parameters(fit, loadings=T, threshold = 0.3, summary=T)))
kbl <- model_parameters(fit, loadings=T, threshold = 0.3, summary=T) |>
stable()
kbl
}f_MSA <- function(data){
KMOTEST=KMOS(data)
# Anti-image Correlation (MSA > 0.5)
MSA_list <- data.table("Item"=names(KMOTEST$MSA), "MSA"=as.numeric(KMOTEST$MSA))
# Sort table
MSA_list<- MSA_list |>
setorder(cols = "MSA")
# Display table
kbl_MSA <- MSA_list |>
stable(3) |>
row_spec(which(MSA_list[,2]<0.5), bold = T, color = "white", background = "red")
kbl_MSA
}# create multiple paf's with different number of factors
f_PAFn <- function(data, nf=1, rotation){
# perform multiple PAFs one for each factor number in selection
PAFn = list()
i=1
for (n in nf) {
PAFn[[i]] <- psych::fa(data, rotate=rotation, scores=TRUE, nfactors = n)
i=i+1
}
names(PAFn) <- nf
PAFn
}# create multiple paf's with different number of factors
f_PCAn <- function(data, nf=1, rotation){
# perform multiple PAFs one for each factor number in selection
PCAn = list()
i=1
for (n in nf) {
PCAn[[i]] <- psych::principal(data, rotate=rotation, scores=TRUE, nfactors = n)
i=i+1
}
names(PCAn) <- nf
PCAn
}f_scree <- function(fit){
#display Scree-plot (retain factors before elbow)
plot(fit$e.values,xlab="Factor Number",
ylab="Eigenvalue",
main="Scree plot",
cex.lab=1.2,
cex.axis=1.2,
cex.main=1.8,
col = "#0099F8",
pch = 19)
abline(h=1, col = "#7F35B2")
}f_totalvar_eval <- function(fit){
#calculate total variance (does not change if number of factors change)
fit_EigenValue <- fit$e.values
fit_Variance <- fit_EigenValue / length(fit$e.values) * 100 # ncol(data) = sum(fit1$e.values) = length(fit1$e.values)
fit_SumVariance <- cumsum(fit_EigenValue / length(fit$e.values))
fit_Total_Variance_Explained <- cbind("Factor number"=
seq(1, length.out = length(fit_EigenValue[fit_EigenValue>0])),
EigenValue = fit_EigenValue[fit_EigenValue>0],
Variance = fit_Variance[fit_EigenValue>0],
Total_Variance = fit_SumVariance[fit_EigenValue>0])
#display table
kbl <- fit_Total_Variance_Explained |>
stable(caption=paste0("Total Variance Explained for function \"",fit$fn ,"\" calculated with \"e.values\" argument for rotation \"", fit$rotation, "\" and ", fit$factors, " factors"))
kbl
}f_totalvar_val <- function(fit){
#calculate total variance (does not change if number of factors change)
fit_EigenValue <- fit$values
fit_Variance <- fit_EigenValue / length(fit$values) * 100 # ncol(data) = sum(fit$values) = length(fit$values)
fit_SumVariance <- cumsum(fit_EigenValue / length(fit$values))
fit_Total_Variance_Explained <- cbind("Factor number"=
seq(1, length.out = length(fit_EigenValue[fit_EigenValue>0])),
EigenValue = fit_EigenValue[fit_EigenValue>0],
Variance = fit_Variance[fit_EigenValue>0],
Total_Variance = fit_SumVariance[fit_EigenValue>0])
#display table
kbl <- fit_Total_Variance_Explained |>
stable(caption=paste0("Total Variance Explained for function \"",fit$fn ,"\" calculated with \"values\" argument for rotation \"", fit$rotation, "\" and ", fit$factors, " factors"))
kbl
}f_totalvar_load <- function(fit){
#calculate total variance (does not change if number of factors change)
fit_EigenValue <- f_eigenvalue_load(fit)
fit_Variance <- fit_EigenValue / length(fit$values) * 100 # ncol(data) = sum(fit$values) = length(fit$values)
fit_SumVariance <- cumsum(fit_EigenValue / length(fit$values))
fit_Total_Variance_Explained <- cbind("Factor number"=
seq(1, length.out = length(fit_EigenValue[fit_EigenValue>0])),
EigenValue = fit_EigenValue[fit_EigenValue>0],
Variance = fit_Variance[fit_EigenValue>0],
Total_Variance = fit_SumVariance[fit_EigenValue>0])
#display table
kbl <- fit_Total_Variance_Explained |>
stable(caption=paste0("Test - Total Variance Explained for function \"",fit$fn ,"\" calculated with loadings for rotation \"", fit$rotation, "\" and ", fit$factors, " factors"))
kbl
}survey <- read.csv("Case Study III_Structural Equation Modeling.csv")
labels <- read.csv("Variables and Labels_Galeries Lafayette.csv")
dim(survey)## [1] 553 45
# head(labels)# delete variables unused in analysis (see case study instructions):
survey <- survey |> select(-c("SAT_P1", "SAT_P2", "SAT_P3", "SAT_P4", "SAT_P5", "SAT_P6", "TRU_1", "TRU_2", "TRU_3"))
# "C_CR2",
# replace missing data (999) with NA
survey <- data.frame(sapply(survey,function(x) ifelse((x==999),NA,as.numeric(x))))#Make labels more readable
#create copy of label column without variable code
labels["Category"] <- sub("[^-]*\\s-","",labels[["Label"]])
#split this new column (category) into category and short label
labels[c("Category","Label_short")] <- str_split_fixed(labels[["Category"]],"\\?\\s\\s|\\s-", n=2)
# labels[20:25,c("Category","Label_short")]
# print out the table
labels[,c("Variable","Category","Label_short")] |>
stable()| Variable | Category | Label_short |
|---|---|---|
| Im1 | What do GLB represent from your point of view | Large Assortment |
| Im2 | What do GLB represent from your point of view | Assortment Variety |
| Im3 | What do GLB represent from your point of view | Artistic Decoration of Sales Area |
| Im4 | What do GLB represent from your point of view | Creative Decoration of Sales Area |
| Im5 | What do GLB represent from your point of view | Appealing Arrangement of Shop Windows |
| Im6 | What do GLB represent from your point of view | France |
| Im7 | What do GLB represent from your point of view | French Savoir-vivre |
| Im8 | What do GLB represent from your point of view | Expertise in French Traditional Cuisine |
| Im9 | What do GLB represent from your point of view | French Fashion |
| Im10 | What do GLB represent from your point of view | Gourmet Food |
| Im11 | What do GLB represent from your point of view | High-quality Cosmetics |
| Im12 | What do GLB represent from your point of view | Luxury brands |
| Im13 | What do GLB represent from your point of view | Up tp date Designer Brands |
| Im14 | What do GLB represent from your point of view | Gourmet specialities |
| Im15 | What do GLB represent from your point of view | Professional Selection of Brands |
| Im16 | What do GLB represent from your point of view | Professional Appearance Towards Customers |
| Im17 | What do GLB represent from your point of view | Are Trendy |
| Im18 | What do GLB represent from your point of view | Are Hip |
| Im19 | What do GLB represent from your point of view | Professional Organization |
| Im20 | What do GLB represent from your point of view | Relaxing Shopping |
| Im21 | What do GLB represent from your point of view | A Great Place to Stroll |
| Im22 | What do GLB represent from your point of view | Intimate Shop Atmosphere |
| C_CR1 | CO-CREATION | I would like to participate in an expert-workshop to improve the assortment of Galeries Lafayette Berlin. |
| C_CR2 | CO-CREATION | I would be available to take part in another survey at Galeries Lafayette Berlin. |
| C_CR3 | CO-CREATION | I would like to become a member of a customer group whose opinion is obtained for new products and major changes. |
| C_CR4 | CO-CREATION | I would like to participate in planning and designing special events (e.g. fashion show, introduction of new car models) if asked. |
| C_REP1 | REPURCHASE | I will continue to be a loyal customer of Galeries Lafayette Berlin. |
| C_REP2 | REPURCHASE | I intend to shop at Galeries Lafayette Berlin in the future. |
| C_REP3 | REPURCAHSE | I will surely visit Galeries Lafayette Berlin in the future. |
| COM_A1 | AFFECTIVE COMMITMENT | How strongly are you attached to Galeries Lafayette Berlin? |
| COM_A2 | AFFECTIVE COMMITMENT | How strongly are you emotionally connected to Galeries Lafayette Berlin? |
| COM_A3 | AFFECTIVE COMMITMENT | As a customer I feel (close) attached to GL |
| COM_A4 | AFFECTIVE COMMITMENT | feel a strong emotional bond toward GLB |
| SAT_1 | SATISFACTION | I am very satisfied with Galeries Lafayette Berlin. |
| SAT_2 | SATISFACTION | Overall, I am very satisfied with Galeries Lafayette Berlin. |
| SAT_3 | SATISFACTION | How satisfied are you with Galeries Lafayette Berlin? |
| SAT_P1 | SATISFACTION EMPLOYEES | The employees are capable and professional. |
| SAT_P2 | SATISFACTION EMPLOYEES | The employees know best about their products. |
| SAT_P3 | SATISFACTION EMPLOYEES | The employees are well-informed. |
| SAT_P4 | SATISFACTION EMPLOYEES | The employees are always helpful. |
| SAT_P5 | SATISFACTION EMPLOYEES | The employees are willing to respond to my questions in detail. |
| SAT_P6 | SATISFACTION EMPLOYEES | The employees are friendly. |
| TRU_1 | TRUST | I have the feeling that I can completely rely on GL. |
| TRU_2 | TRUST | GLB will always be honest and trustful with me. |
| TRU_3 | TRUST | GL will treat me always fair as a customer |
summary(survey)## Im1 Im2 Im3 Im4 Im5
## Min. :1.000 Min. :1.000 Min. :1.000 Min. :1.000 Min. :1.00
## 1st Qu.:4.000 1st Qu.:4.000 1st Qu.:4.000 1st Qu.:4.000 1st Qu.:4.00
## Median :5.000 Median :5.000 Median :5.000 Median :5.000 Median :5.00
## Mean :4.792 Mean :4.854 Mean :4.985 Mean :5.002 Mean :5.04
## 3rd Qu.:6.000 3rd Qu.:6.000 3rd Qu.:6.000 3rd Qu.:6.000 3rd Qu.:6.00
## Max. :7.000 Max. :7.000 Max. :7.000 Max. :7.000 Max. :7.00
## NA's :14 NA's :18 NA's :20 NA's :10 NA's :29
## Im6 Im7 Im8 Im9 Im10
## Min. :1.000 Min. :2.00 Min. :1.000 Min. :1.000 Min. :2.000
## 1st Qu.:5.000 1st Qu.:5.00 1st Qu.:6.000 1st Qu.:4.000 1st Qu.:6.000
## Median :6.000 Median :6.00 Median :6.000 Median :5.000 Median :6.000
## Mean :5.824 Mean :5.75 Mean :5.996 Mean :5.076 Mean :6.102
## 3rd Qu.:7.000 3rd Qu.:7.00 3rd Qu.:7.000 3rd Qu.:6.000 3rd Qu.:7.000
## Max. :7.000 Max. :7.00 Max. :7.000 Max. :7.000 Max. :7.000
## NA's :9 NA's :26 NA's :6 NA's :16 NA's :6
## Im11 Im12 Im13 Im14
## Min. :1.000 Min. :1.000 Min. :1.000 Min. :1.000
## 1st Qu.:5.000 1st Qu.:5.000 1st Qu.:5.000 1st Qu.:6.000
## Median :6.000 Median :6.000 Median :6.000 Median :6.000
## Mean :5.654 Mean :5.665 Mean :5.444 Mean :6.144
## 3rd Qu.:6.000 3rd Qu.:6.000 3rd Qu.:6.000 3rd Qu.:7.000
## Max. :7.000 Max. :7.000 Max. :7.000 Max. :7.000
## NA's :12 NA's :21 NA's :15 NA's :24
## Im15 Im16 Im17 Im18 Im19
## Min. :1.000 Min. :1.00 Min. :1.000 Min. :1.000 Min. :1.000
## 1st Qu.:4.000 1st Qu.:4.00 1st Qu.:4.000 1st Qu.:4.000 1st Qu.:4.000
## Median :5.000 Median :5.00 Median :5.000 Median :5.000 Median :5.000
## Mean :5.098 Mean :5.13 Mean :5.018 Mean :4.571 Mean :5.148
## 3rd Qu.:6.000 3rd Qu.:6.00 3rd Qu.:6.000 3rd Qu.:6.000 3rd Qu.:6.000
## Max. :7.000 Max. :7.00 Max. :7.000 Max. :7.000 Max. :7.000
## NA's :12 NA's :24 NA's :12 NA's :28 NA's :12
## Im20 Im21 Im22 C_CR1
## Min. :1.000 Min. :1.000 Min. :1.000 Min. :1.000
## 1st Qu.:4.000 1st Qu.:4.000 1st Qu.:3.000 1st Qu.:1.000
## Median :5.000 Median :5.000 Median :4.000 Median :2.000
## Mean :4.669 Mean :5.135 Mean :4.289 Mean :2.674
## 3rd Qu.:6.000 3rd Qu.:6.000 3rd Qu.:6.000 3rd Qu.:4.000
## Max. :7.000 Max. :7.000 Max. :7.000 Max. :7.000
## NA's :9 NA's :5 NA's :17 NA's :20
## C_CR2 C_CR3 C_CR4 C_REP1 C_REP2
## Min. :1.000 Min. :1.000 Min. :1.000 Min. :1.000 Min. :1.00
## 1st Qu.:3.000 1st Qu.:1.000 1st Qu.:1.000 1st Qu.:4.000 1st Qu.:4.00
## Median :5.000 Median :3.000 Median :2.000 Median :4.000 Median :5.00
## Mean :4.616 Mean :3.271 Mean :2.796 Mean :4.281 Mean :4.51
## 3rd Qu.:6.000 3rd Qu.:5.000 3rd Qu.:4.000 3rd Qu.:5.000 3rd Qu.:5.00
## Max. :7.000 Max. :7.000 Max. :7.000 Max. :5.000 Max. :5.00
## NA's :30 NA's :6 NA's :10 NA's :5 NA's :16
## C_REP3 COM_A1 COM_A2 COM_A3 COM_A4
## Min. :1.000 Min. :1.000 Min. :1.00 Min. :1.000 Min. :1.000
## 1st Qu.:4.000 1st Qu.:4.000 1st Qu.:3.00 1st Qu.:2.000 1st Qu.:2.000
## Median :5.000 Median :4.000 Median :4.00 Median :3.000 Median :3.000
## Mean :4.682 Mean :4.302 Mean :3.88 Mean :3.536 Mean :3.456
## 3rd Qu.:5.000 3rd Qu.:5.000 3rd Qu.:5.00 3rd Qu.:5.000 3rd Qu.:5.000
## Max. :5.000 Max. :7.000 Max. :7.00 Max. :7.000 Max. :7.000
## NA's :18 NA's :14 NA's :11 NA's :18 NA's :9
## SAT_1 SAT_2 SAT_3
## Min. :2.000 Min. :1.000 Min. :1.00
## 1st Qu.:5.000 1st Qu.:5.000 1st Qu.:5.00
## Median :6.000 Median :6.000 Median :6.00
## Mean :5.349 Mean :5.481 Mean :5.45
## 3rd Qu.:6.000 3rd Qu.:6.000 3rd Qu.:6.00
## Max. :7.000 Max. :7.000 Max. :7.00
## NA's :5 NA's :10 NA's :40
Looking at the data we see that all survey questions seem to be based on a 7-level Likert scale.
The data does have missing values which we will handle in the following way:
The total number of observations is 553
# excluded image variables (in the first round of EFA we don't exclude any image variables...)
exclude=c()
# the full survey data (includes dependent and independent variables) with excluded image variables (in this first round of EFA we don't exclude anything)
survey_excl_img <- survey |> select(-exclude)
# the data we will use for EFA (images)
data_img_EFA <- survey_excl_img[1:(22-length(exclude))]
# list of excluded variables and their meaning
excludedvars <- filter(labels, Variable %in% exclude)[c("Variable","Label_short")]
excludedvars |>
stable(caption="Indicator variables we chose to exclude:")| Variable | Label_short |
|---|---|
# delete missing data (delete listwise)
data_img_EFA <- na.omit(data_img_EFA)
dim(survey)## [1] 553 36
dim(survey_excl_img)## [1] 553 36
dim(data_img_EFA)## [1] 385 22
f_corr_matrix(data_img_EFA)Variables to look out for going forward:
Correlations for Images 9 and 11 are fairly evenly distributed across all other variables, they do not correlate with a specific group of other variables.
Pairs of images: (17,18), are highly correlated and similar correlation profiles, their correlations to other variables are similar. Same comment to a lesser degree for pairs (6,7) and (16,19). Each of these variable pairs will most likely make up a factor.
# p-value < 0.5
# pass/ fail
f_bartlett(data_img_EFA)[[1]]| Value | Result | |
|---|---|---|
| pvalue | 0.000 | PASS |
| chisq | 6451.238 |
# details
f_bartlett(data_img_EFA)[[2]]## Bartlett's Test of Sphericity
##
## Call: bart_spher(x = data)
##
## X2 = 6451.238
## df = 231
## p-value < 2.22e-16
The Bartlett Test tests the hypothesis that the sample originates from a population, where all variables are uncorrelated. The null hypothesis of Bartlett’s test rejected meaning that the data is not uncorrelated and indicates it is fit for factor analysis.
# KMO > 0.6
f_KMO(data_img_EFA)| Value | Result | |
|---|---|---|
| KMO | 0.877 | PASS |
The KMO is above 0.6 which indicates the data is well suited for factor anlysis.
# MSA > 0.5
f_MSA(data_img_EFA)| Item | MSA |
|---|---|
| Im2 | 0.822 |
| Im6 | 0.822 |
| Im1 | 0.824 |
| Im20 | 0.827 |
| Im14 | 0.827 |
| Im10 | 0.829 |
| Im7 | 0.845 |
| Im4 | 0.854 |
| Im18 | 0.855 |
| Im3 | 0.864 |
| Im17 | 0.864 |
| Im13 | 0.872 |
| Im12 | 0.879 |
| Im22 | 0.879 |
| Im16 | 0.909 |
| Im11 | 0.911 |
| Im21 | 0.915 |
| Im8 | 0.930 |
| Im9 | 0.938 |
| Im19 | 0.940 |
| Im5 | 0.955 |
| Im15 | 0.965 |
Variables with MSA values above 0.5 are suited for factor analysis.
Presence of items with low MSA’s (<0.5) could indicate that an important topic has not been well covered in the questionnaire.
In our case, all variables have MSA above 0.5.
# factor analysis
PAF1 <- psych::fa(data_img_EFA, rotate="varimax", scores=TRUE)
# note: by default number of factors = 1 if it is not specifiedf_scree(PAF1)The scree plot suggests we should keep the factors before the “elbow”. In our case this might be 2, 6 and potentially 8 but this is hard to tell.
f_kaiser(PAF1)## [1] "Kaiser number = 6"
The Kaiser criterion suggests we should retain factors with eigenvalues bigger than 1.
There are 6 factors satisfying this condition.
It is common practice to keep one more factor than the result of the Kaiser criterion, so 7.
f_totalvar_eval(PAF1)| Factor number | EigenValue | Variance | Total_Variance |
|---|---|---|---|
| 1 | 8.98 | 40.81 | 0.41 |
| 2 | 2.47 | 11.21 | 0.52 |
| 3 | 1.56 | 7.10 | 0.59 |
| 4 | 1.46 | 6.62 | 0.66 |
| 5 | 1.25 | 5.67 | 0.71 |
| 6 | 1.15 | 5.22 | 0.77 |
| 7 | 0.81 | 3.68 | 0.80 |
| 8 | 0.71 | 3.23 | 0.84 |
| 9 | 0.57 | 2.58 | 0.86 |
| 10 | 0.46 | 2.08 | 0.88 |
| 11 | 0.36 | 1.64 | 0.90 |
| 12 | 0.33 | 1.51 | 0.91 |
| 13 | 0.29 | 1.34 | 0.93 |
| 14 | 0.28 | 1.29 | 0.94 |
| 15 | 0.25 | 1.13 | 0.95 |
| 16 | 0.23 | 1.04 | 0.96 |
| 17 | 0.20 | 0.92 | 0.97 |
| 18 | 0.19 | 0.85 | 0.98 |
| 19 | 0.16 | 0.72 | 0.99 |
| 20 | 0.12 | 0.53 | 0.99 |
| 21 | 0.10 | 0.46 | 1.00 |
| 22 | 0.08 | 0.37 | 1.00 |
With 7 factors we would explain 80% of the variance.
We notice that the gain in variance explanation from 7 to 8 factors (3.23%) is comparable to the one from 6 to 7 (3.68%) but after there is a sharp drop, this again could indicate that we might need 8 factors, which would explain 84% of the total variance.
Based on the results above we decide to test factor analysis solutions for 6, 7 and 8 factors.
# select nb of factors to explore
nf = c(6,7,8)PAFn <- f_PAFn(data_img_EFA, nf, "varimax")
PAFn_obl = f_PAFn(data_img_EFA, nf, "promax")#communalities for all selected number of factors (eliminate variables with communality < 0.3)
for (i in 1:length(nf)) {
cat("##### Number of factors =", nf[[i]], "{.unnumbered .tabset}" ,"\n")
print(f_communality(PAFn[[i]]))
cat("\n\n")
}| Item | Communality |
|---|---|
| Im11 | 0.45 |
| Im9 | 0.46 |
| Im16 | 0.47 |
| Im19 | 0.52 |
| Im5 | 0.55 |
| Im18 | 0.57 |
| Im15 | 0.63 |
| Im21 | 0.65 |
| Im17 | 0.70 |
| Im13 | 0.70 |
| Im6 | 0.71 |
| Im12 | 0.73 |
| Im8 | 0.74 |
| Im14 | 0.76 |
| Im2 | 0.76 |
| Im10 | 0.78 |
| Im7 | 0.78 |
| Im20 | 0.79 |
| Im22 | 0.79 |
| Im1 | 0.84 |
| Im3 | 0.85 |
| Im4 | 0.92 |
| Item | Communality |
|---|---|
| Im11 | 0.44 |
| Im9 | 0.46 |
| Im16 | 0.47 |
| Im19 | 0.53 |
| Im5 | 0.54 |
| Im15 | 0.63 |
| Im21 | 0.65 |
| Im13 | 0.70 |
| Im18 | 0.71 |
| Im8 | 0.72 |
| Im6 | 0.76 |
| Im2 | 0.78 |
| Im22 | 0.79 |
| Im20 | 0.79 |
| Im14 | 0.81 |
| Im12 | 0.83 |
| Im7 | 0.85 |
| Im1 | 0.86 |
| Im3 | 0.86 |
| Im10 | 0.89 |
| Im17 | 0.95 |
| Im4 | 0.97 |
| Item | Communality |
|---|---|
| Im11 | 0.45 |
| Im9 | 0.46 |
| Im5 | 0.58 |
| Im19 | 0.62 |
| Im15 | 0.65 |
| Im21 | 0.65 |
| Im13 | 0.70 |
| Im8 | 0.72 |
| Im18 | 0.74 |
| Im6 | 0.76 |
| Im22 | 0.78 |
| Im16 | 0.80 |
| Im2 | 0.81 |
| Im20 | 0.81 |
| Im12 | 0.84 |
| Im7 | 0.85 |
| Im14 | 0.85 |
| Im3 | 0.86 |
| Im10 | 0.90 |
| Im17 | 0.93 |
| Im1 | 0.94 |
| Im4 | 0.97 |
Typically we should think about excluding variables with communalities below 0.3.
There are no variables satisfying this condition above.
But we still keep an eye out for those variables with the lowest communality: Im9 and Im11.
# loadings for all selected number of factors
for (i in 1:length(nf)) {
cat("##### Number of factors =", nf[[i]], "{.unnumbered .tabset}" ,"\n")
cat("###### Structure Matrix {.unnumbered}" ,"\n")
print(f_loadings(PAFn[[i]]))
cat("###### Pattern Matrix{.unnumbered}" ,"\n")
print(f_loadings(PAFn_obl[[i]]))
cat("\n\n")
}| Variable | MR2 | MR5 | MR1 | MR4 | MR3 | MR6 | Complexity | Uniqueness |
|---|---|---|---|---|---|---|---|---|
| Im1 | 0.86 | 1.30 | 0.16 | |||||
| Im2 | 0.83 | 1.24 | 0.24 | |||||
| Im3 | 0.83 | 1.51 | 0.15 | |||||
| Im4 | 0.88 | 1.42 | 0.08 | |||||
| Im5 | 0.64 | 1.74 | 0.45 | |||||
| Im6 | 0.61 | 0.56 | 2.12 | 0.29 | ||||
| Im7 | 0.72 | 0.48 | 1.88 | 0.22 | ||||
| Im8 | 0.81 | 1.25 | 0.26 | |||||
| Im9 | 0.35 | 0.32 | 0.43 | 3.51 | 0.54 | |||
| Im10 | 0.80 | 1.42 | 0.22 | |||||
| Im11 | 0.59 | 1.62 | 0.55 | |||||
| Im12 | 0.79 | 1.34 | 0.27 | |||||
| Im13 | 0.73 | 1.66 | 0.30 | |||||
| Im14 | 0.80 | 1.42 | 0.24 | |||||
| Im15 | 0.60 | 2.76 | 0.37 | |||||
| Im16 | 0.48 | 0.37 | 2.78 | 0.53 | ||||
| Im17 | 0.35 | 0.31 | 0.39 | 0.54 | 3.66 | 0.30 | ||
| Im18 | 0.35 | 0.50 | 3.48 | 0.43 | ||||
| Im19 | 0.46 | 0.40 | 3.45 | 0.48 | ||||
| Im20 | 0.84 | 1.22 | 0.21 | |||||
| Im21 | 0.73 | 1.43 | 0.35 | |||||
| Im22 | 0.79 | 1.60 | 0.21 |
| Variable | MR2 | MR5 | MR1 | MR4 | MR3 | MR6 | Complexity | Uniqueness |
|---|---|---|---|---|---|---|---|---|
| Im1 | 1.05 | 1.06 | 0.16 | |||||
| Im2 | 1.03 | 1.07 | 0.24 | |||||
| Im3 | 0.99 | 1.03 | 0.15 | |||||
| Im4 | 1.06 | 1.05 | 0.08 | |||||
| Im5 | 0.74 | 1.03 | 0.45 | |||||
| Im6 | 0.52 | 0.68 | 2.22 | 0.29 | ||||
| Im7 | 0.65 | 0.56 | 2.24 | 0.22 | ||||
| Im8 | 0.80 | 1.05 | 0.26 | |||||
| Im9 | 0.48 | 1.95 | 0.54 | |||||
| Im10 | 0.81 | 1.23 | 0.22 | |||||
| Im11 | 0.67 | 1.15 | 0.55 | |||||
| Im12 | 0.91 | 1.03 | 0.27 | |||||
| Im13 | 0.79 | 1.09 | 0.30 | |||||
| Im14 | 0.80 | 1.18 | 0.24 | |||||
| Im15 | 0.60 | 1.18 | 0.37 | |||||
| Im16 | 0.46 | 1.81 | 0.53 | |||||
| Im17 | 0.57 | 1.97 | 0.30 | |||||
| Im18 | 0.54 | 1.91 | 0.43 | |||||
| Im19 | 0.39 | 2.15 | 0.48 | |||||
| Im20 | 0.92 | 1.07 | 0.21 | |||||
| Im21 | 0.76 | 1.07 | 0.35 | |||||
| Im22 | 0.80 | 1.04 | 0.21 |
| Variable | MR5 | MR1 | MR3 | MR2 | MR4 | MR7 | MR6 | Complexity | Uniqueness |
|---|---|---|---|---|---|---|---|---|---|
| Im1 | 0.86 | 1.33 | 0.14 | ||||||
| Im2 | 0.83 | 1.27 | 0.22 | ||||||
| Im3 | 0.83 | 1.56 | 0.14 | ||||||
| Im4 | 0.90 | 1.40 | 0.03 | ||||||
| Im5 | 0.63 | 1.85 | 0.46 | ||||||
| Im6 | 0.83 | 1.25 | 0.24 | ||||||
| Im7 | 0.32 | 0.84 | 1.44 | 0.15 | |||||
| Im8 | 0.63 | 0.51 | 2.31 | 0.28 | |||||
| Im9 | 0.33 | 0.45 | 3.45 | 0.54 | |||||
| Im10 | 0.87 | 1.35 | 0.11 | ||||||
| Im11 | 0.58 | 1.72 | 0.56 | ||||||
| Im12 | 0.85 | 1.30 | 0.17 | ||||||
| Im13 | 0.72 | 1.81 | 0.30 | ||||||
| Im14 | 0.81 | 1.50 | 0.19 | ||||||
| Im15 | 0.59 | 2.97 | 0.37 | ||||||
| Im16 | 0.46 | 0.34 | 3.44 | 0.53 | |||||
| Im17 | 0.84 | 1.76 | 0.05 | ||||||
| Im18 | 0.72 | 1.85 | 0.29 | ||||||
| Im19 | 0.43 | 0.37 | 4.25 | 0.47 | |||||
| Im20 | 0.85 | 1.21 | 0.21 | ||||||
| Im21 | 0.73 | 1.44 | 0.35 | ||||||
| Im22 | 0.78 | 1.62 | 0.21 |
| Variable | MR5 | MR1 | MR2 | MR3 | MR4 | MR7 | MR6 | Complexity | Uniqueness |
|---|---|---|---|---|---|---|---|---|---|
| Im1 | 1.08 | 1.06 | 0.14 | ||||||
| Im2 | 1.05 | 1.06 | 0.22 | ||||||
| Im3 | 1.00 | 1.02 | 0.14 | ||||||
| Im4 | 1.13 | 1.04 | 0.03 | ||||||
| Im5 | 0.72 | 1.02 | 0.46 | ||||||
| Im6 | 0.92 | 1.06 | 0.24 | ||||||
| Im7 | 0.89 | 1.06 | 0.15 | ||||||
| Im8 | 0.62 | 0.38 | 1.74 | 0.28 | |||||
| Im9 | 0.42 | 2.10 | 0.54 | ||||||
| Im10 | 1.04 | 1.03 | 0.11 | ||||||
| Im11 | 0.65 | 1.14 | 0.56 | ||||||
| Im12 | 1.01 | 1.04 | 0.17 | ||||||
| Im13 | 0.78 | 1.08 | 0.30 | ||||||
| Im14 | 0.94 | 1.01 | 0.19 | ||||||
| Im15 | 0.60 | 1.17 | 0.37 | ||||||
| Im16 | 0.40 | 2.69 | 0.53 | ||||||
| Im17 | 1.09 | 1.02 | 0.05 | ||||||
| Im18 | 0.92 | 1.02 | 0.29 | ||||||
| Im19 | 0.33 | 3.23 | 0.47 | ||||||
| Im20 | 0.94 | 1.05 | 0.21 | ||||||
| Im21 | 0.78 | 1.06 | 0.35 | ||||||
| Im22 | 0.81 | 1.05 | 0.21 |
| Variable | MR1 | MR3 | MR4 | MR7 | MR2 | MR5 | MR6 | MR8 | Complexity | Uniqueness |
|---|---|---|---|---|---|---|---|---|---|---|
| Im1 | 0.88 | 1.45 | 0.06 | |||||||
| Im2 | 0.82 | 1.45 | 0.19 | |||||||
| Im3 | 0.81 | 1.66 | 0.14 | |||||||
| Im4 | 0.89 | 1.47 | 0.03 | |||||||
| Im5 | 0.65 | 1.84 | 0.42 | |||||||
| Im6 | 0.83 | 1.23 | 0.24 | |||||||
| Im7 | 0.84 | 0.30 | 1.40 | 0.15 | ||||||
| Im8 | 0.54 | 0.59 | 2.56 | 0.28 | ||||||
| Im9 | 0.33 | 0.46 | 3.34 | 0.54 | ||||||
| Im10 | 0.87 | 1.41 | 0.10 | |||||||
| Im11 | 0.58 | 1.72 | 0.55 | |||||||
| Im12 | 0.86 | 1.28 | 0.16 | |||||||
| Im13 | 0.72 | 1.78 | 0.30 | |||||||
| Im14 | 0.83 | 1.49 | 0.15 | |||||||
| Im15 | 0.47 | 0.39 | 4.81 | 0.35 | ||||||
| Im16 | 0.77 | 1.78 | 0.20 | |||||||
| Im17 | 0.82 | 1.82 | 0.07 | |||||||
| Im18 | 0.74 | 1.76 | 0.26 | |||||||
| Im19 | 0.30 | 0.54 | 3.68 | 0.38 | ||||||
| Im20 | 0.86 | 1.20 | 0.19 | |||||||
| Im21 | 0.73 | 1.44 | 0.35 | |||||||
| Im22 | 0.78 | 1.63 | 0.22 |
| Variable | MR1 | MR3 | MR7 | MR2 | MR4 | MR5 | MR6 | MR8 | Complexity | Uniqueness |
|---|---|---|---|---|---|---|---|---|---|---|
| Im1 | 1.04 | 1.01 | 0.06 | |||||||
| Im2 | 0.95 | 1.02 | 0.19 | |||||||
| Im3 | 0.90 | 1.02 | 0.14 | |||||||
| Im4 | 1.03 | 1.03 | 0.03 | |||||||
| Im5 | 0.72 | 1.11 | 0.42 | |||||||
| Im6 | 0.98 | 1.06 | 0.24 | |||||||
| Im7 | 0.95 | 1.05 | 0.15 | |||||||
| Im8 | 0.43 | 0.49 | 2.39 | 0.28 | ||||||
| Im9 | 0.45 | 1.92 | 0.54 | |||||||
| Im10 | 0.97 | 1.01 | 0.10 | |||||||
| Im11 | 0.66 | 1.15 | 0.55 | |||||||
| Im12 | 1.04 | 1.05 | 0.16 | |||||||
| Im13 | 0.79 | 1.06 | 0.30 | |||||||
| Im14 | 0.92 | 1.02 | 0.15 | |||||||
| Im15 | 0.35 | 0.36 | 2.73 | 0.35 | ||||||
| Im16 | 1.02 | 1.03 | 0.20 | |||||||
| Im17 | 0.98 | 1.01 | 0.07 | |||||||
| Im18 | 0.90 | 1.01 | 0.26 | |||||||
| Im19 | 0.63 | 1.11 | 0.38 | |||||||
| Im20 | 0.98 | 1.09 | 0.19 | |||||||
| Im21 | 0.79 | 1.06 | 0.35 | |||||||
| Im22 | 0.82 | 1.06 | 0.22 |
Looking at the 6 factor solution, we see quite a lot of variables cross-loading on multiple factors: Im6, Im7, Im9, Im16, Im17, Im18, Im19. These are a lot of cross-loading variables, in addition we have already commented above looking at the correlation matrix that pairs of variables (Im16, Im19) and (Im17, Im18) will most likely need their own factor. We need to consider more factors.
The 7 factor solution seems better. There are less cross-loading elements. We notice though that the pair (Im16, Im19) still doesn’t have its own factor to load on as we might expect.
The 8 factor solution is in our opinion the best out of the 3. The high correlation pairs now mostly all load on their own factors and we have many less cross-loading elements.
The remaining cross-loading elements are: Im8, Im9 and Im15 and Im19 to a lesser extent.
We now perform a second round of exploratory factor analysis but excluding the 3 variables Im8, Im9, Im15
# excluded image variables (in the first round of EFA we don't exclude any image variables...)
exclude=c("Im8", "Im9", "Im15")
# the full survey data (includes dependent and independent variables) with excluded image variables (in this first round of EFA we don't exclude anything)
survey_excl_img <- survey |> select(-exclude)
# the data we will use for EFA (images)
data_img_EFA <- survey_excl_img[1:(22-length(exclude))]
# list of excluded variables and their meaning
excludedvars <- filter(labels, Variable %in% exclude)[c("Variable","Label_short")]
excludedvars |>
stable(caption="Indicator variables we chose to exclude:")| Variable | Label_short |
|---|---|
| Im8 | Expertise in French Traditional Cuisine |
| Im9 | French Fashion |
| Im15 | Professional Selection of Brands |
# delete missing data (delete listwise)
data_img_EFA <- na.omit(data_img_EFA)
dim(survey)## [1] 553 36
dim(survey_excl_img)## [1] 553 33
dim(data_img_EFA)## [1] 394 19
In addition to the preferred 8 factor solution we also keep the 7 factor solution just in case.
# select nb of factors to explore
nf = c(7,8)PAFn <- f_PAFn(data_img_EFA, nf, "varimax")
PAFn_obl = f_PAFn(data_img_EFA, nf, "promax")#communalities for all selected number of factors (eliminate variables with communality < 0.3)
for (i in 1:length(nf)) {
cat("##### Number of factors =", nf[[i]], "{.unnumbered .tabset}" ,"\n")
print(f_communality(PAFn[[i]]))
cat("\n\n")
}| Item | Communality |
|---|---|
| Im16 | 0.43 |
| Im11 | 0.43 |
| Im19 | 0.51 |
| Im5 | 0.55 |
| Im21 | 0.64 |
| Im18 | 0.67 |
| Im13 | 0.69 |
| Im7 | 0.72 |
| Im14 | 0.78 |
| Im22 | 0.78 |
| Im20 | 0.79 |
| Im2 | 0.81 |
| Im3 | 0.86 |
| Im12 | 0.87 |
| Im1 | 0.91 |
| Im6 | 0.93 |
| Im4 | 0.97 |
| Im10 | 0.97 |
| Im17 | 1.00 |
| Item | Communality |
|---|---|
| Im11 | 0.43 |
| Im5 | 0.58 |
| Im21 | 0.64 |
| Im16 | 0.67 |
| Im18 | 0.68 |
| Im13 | 0.69 |
| Im7 | 0.69 |
| Im19 | 0.70 |
| Im2 | 0.76 |
| Im14 | 0.78 |
| Im22 | 0.78 |
| Im20 | 0.81 |
| Im3 | 0.86 |
| Im12 | 0.87 |
| Im4 | 0.97 |
| Im6 | 0.99 |
| Im10 | 1.00 |
| Im17 | 1.00 |
| Im1 | 1.00 |
All communalities are above 0.3.
Im11 is amongst the lowest communality variables in both the 7 and 8 factor solutions.
# loadings for all selected number of factors
for (i in 1:length(nf)) {
cat("##### Number of factors =", nf[[i]], "{.unnumbered .tabset}" ,"\n")
cat("###### Structure Matrix {.unnumbered}" ,"\n")
print(f_loadings(PAFn[[i]]))
cat("###### Pattern Matrix{.unnumbered}" ,"\n")
print(f_loadings(PAFn_obl[[i]]))
cat("\n\n")
}| Variable | MR1 | MR3 | MR4 | MR5 | MR2 | MR6 | MR7 | Complexity | Uniqueness |
|---|---|---|---|---|---|---|---|---|---|
| Im1 | 0.87 | 1.40 | 0.09 | ||||||
| Im2 | 0.83 | 1.35 | 0.19 | ||||||
| Im3 | 0.84 | 1.46 | 0.14 | ||||||
| Im4 | 0.92 | 1.33 | 0.03 | ||||||
| Im5 | 0.64 | 1.73 | 0.45 | ||||||
| Im6 | 0.93 | 1.17 | 0.07 | ||||||
| Im7 | 0.33 | 0.75 | 1.62 | 0.28 | |||||
| Im10 | 0.92 | 1.32 | 0.03 | ||||||
| Im11 | 0.57 | 1.70 | 0.57 | ||||||
| Im12 | 0.88 | 1.23 | 0.13 | ||||||
| Im13 | 0.72 | 1.76 | 0.31 | ||||||
| Im14 | 0.77 | 0.30 | 1.67 | 0.22 | |||||
| Im16 | 0.38 | 0.37 | 3.99 | 0.57 | |||||
| Im17 | 0.88 | 1.60 | 0.00 | ||||||
| Im18 | 0.70 | 1.84 | 0.33 | ||||||
| Im19 | 0.40 | 0.37 | 4.52 | 0.49 | |||||
| Im20 | 0.85 | 1.19 | 0.21 | ||||||
| Im21 | 0.73 | 1.43 | 0.36 | ||||||
| Im22 | 0.79 | 1.55 | 0.22 |
| Variable | MR1 | MR3 | MR5 | MR4 | MR2 | MR6 | MR7 | Complexity | Uniqueness |
|---|---|---|---|---|---|---|---|---|---|
| Im1 | 1.07 | 1.05 | 0.09 | ||||||
| Im2 | 1.02 | 1.03 | 0.19 | ||||||
| Im3 | 1.01 | 1.02 | 0.14 | ||||||
| Im4 | 1.14 | 1.05 | 0.03 | ||||||
| Im5 | 0.73 | 1.02 | 0.45 | ||||||
| Im6 | 0.98 | 1.04 | 0.07 | ||||||
| Im7 | 0.73 | 1.16 | 0.28 | ||||||
| Im10 | 1.10 | 1.03 | 0.03 | ||||||
| Im11 | 0.60 | 1.16 | 0.57 | ||||||
| Im12 | 1.00 | 1.03 | 0.13 | ||||||
| Im13 | 0.75 | 1.11 | 0.31 | ||||||
| Im14 | 0.87 | 1.04 | 0.22 | ||||||
| Im16 | 3.60 | 0.57 | |||||||
| Im17 | 1.12 | 1.02 | 0.00 | ||||||
| Im18 | 0.86 | 1.03 | 0.33 | ||||||
| Im19 | 3.47 | 0.49 | |||||||
| Im20 | 0.94 | 1.04 | 0.21 | ||||||
| Im21 | 0.77 | 1.05 | 0.36 | ||||||
| Im22 | 0.82 | 1.03 | 0.22 |
| Variable | MR1 | MR3 | MR4 | MR5 | MR2 | MR7 | MR6 | MR8 | Complexity | Uniqueness |
|---|---|---|---|---|---|---|---|---|---|---|
| Im1 | 0.91 | 1.44 | 0.00 | |||||||
| Im2 | 0.78 | 1.56 | 0.24 | |||||||
| Im3 | 0.82 | 1.63 | 0.14 | |||||||
| Im4 | 0.89 | 1.46 | 0.03 | |||||||
| Im5 | 0.66 | 1.78 | 0.42 | |||||||
| Im6 | 0.96 | 1.15 | 0.01 | |||||||
| Im7 | 0.34 | 0.72 | 1.69 | 0.31 | ||||||
| Im10 | 0.93 | 1.32 | 0.00 | |||||||
| Im11 | 0.57 | 1.71 | 0.57 | |||||||
| Im12 | 0.89 | 1.22 | 0.13 | |||||||
| Im13 | 0.72 | 1.76 | 0.31 | |||||||
| Im14 | 0.77 | 1.68 | 0.22 | |||||||
| Im16 | 0.68 | 2.03 | 0.33 | |||||||
| Im17 | 0.88 | 1.65 | 0.00 | |||||||
| Im18 | 0.70 | 1.84 | 0.32 | |||||||
| Im19 | 0.64 | 2.71 | 0.30 | |||||||
| Im20 | 0.86 | 1.19 | 0.19 | |||||||
| Im21 | 0.73 | 1.44 | 0.36 | |||||||
| Im22 | 0.79 | 1.56 | 0.22 |
| Variable | MR1 | MR3 | MR4 | MR2 | MR5 | MR6 | MR7 | MR8 | Complexity | Uniqueness |
|---|---|---|---|---|---|---|---|---|---|---|
| Im1 | 1.03 | 1.01 | 0.00 | |||||||
| Im2 | 0.86 | 1.01 | 0.24 | |||||||
| Im3 | 0.90 | 1.02 | 0.14 | |||||||
| Im4 | 1.02 | 1.03 | 0.03 | |||||||
| Im5 | 0.73 | 1.09 | 0.42 | |||||||
| Im6 | 1.06 | 1.03 | 0.01 | |||||||
| Im7 | 0.72 | 1.14 | 0.31 | |||||||
| Im10 | 1.05 | 1.02 | 0.00 | |||||||
| Im11 | 0.60 | 1.15 | 0.57 | |||||||
| Im12 | 1.02 | 1.04 | 0.13 | |||||||
| Im13 | 0.75 | 1.09 | 0.31 | |||||||
| Im14 | 0.82 | 1.03 | 0.22 | |||||||
| Im16 | 0.80 | 1.02 | 0.33 | |||||||
| Im17 | 1.03 | 1.01 | 0.00 | |||||||
| Im18 | 0.81 | 1.00 | 0.32 | |||||||
| Im19 | 0.72 | 1.04 | 0.30 | |||||||
| Im20 | 0.97 | 1.09 | 0.19 | |||||||
| Im21 | 0.77 | 1.05 | 0.36 | |||||||
| Im22 | 0.82 | 1.04 | 0.22 |
Looking at the structure and pattern matrices for both the 7 and 8 factor solutions, we get confirmation that the 8 factor solution is indeed the best one. It has very clear loadings. the 7 factor solution is not satisfactory, for instance Im16 and Im19 don’t load on any factors at all in the pattern matrix.
Looking at the labels of the image items, we now interpret the meaning of each factor.
fact_interpretation <- c("Decoration","Gourmet Food","Relaxed Atmosphere",
"Product Quality","Choice Range","Brand Image",
"Frenchness","Professionalism")
names(fact_interpretation) <- c("MR1","MR2","MR3",
"MR4","MR5","MR6",
"MR7","MR8")
f_factor_interp(PAFn[["8"]], labels,fact_interpretation)| Variable | Label_short | Loads_on | Interpretation |
|---|---|---|---|
| Im15 | Professional Selection of Brands | excluded | |
| Im8 | Expertise in French Traditional Cuisine | excluded | |
| Im9 | French Fashion | excluded | |
| Im3 | Artistic Decoration of Sales Area | MR1 | Decoration |
| Im4 | Creative Decoration of Sales Area | MR1 | Decoration |
| Im5 | Appealing Arrangement of Shop Windows | MR1 | Decoration |
| Im10 | Gourmet Food | MR2 | Gourmet Food |
| Im14 | Gourmet specialities | MR2 | Gourmet Food |
| Im20 | Relaxing Shopping | MR3 | Relaxed Atmosphere |
| Im21 | A Great Place to Stroll | MR3 | Relaxed Atmosphere |
| Im22 | Intimate Shop Atmosphere | MR3 | Relaxed Atmosphere |
| Im11 | High-quality Cosmetics | MR4 | Product Quality |
| Im12 | Luxury brands | MR4 | Product Quality |
| Im13 | Up tp date Designer Brands | MR4 | Product Quality |
| Im1 | Large Assortment | MR5 | Choice Range |
| Im2 | Assortment Variety | MR5 | Choice Range |
| Im17 | Are Trendy | MR6 | Brand Image |
| Im18 | Are Hip | MR6 | Brand Image |
| Im6 | France | MR7 | Frenchness |
| Im7 | French Savoir-vivre | MR7 | Frenchness |
| Im16 | Professional Appearance Towards Customers | MR8 | Professionalism |
| Im19 | Professional Organization | MR8 | Professionalism |
It is sometimes the case that when we perform a confirmatory factor analysis on the solution found in the exploratory phase we get pretty bad results and need to make some tweaks.
Let us test whether the constructs found in the exploratory phase adequately describe the dimensions of the data.
We start with exactly the model suggested in our exploratory phase with the Im8, Im9 and Im15 excluded.
model_CFA <- "
DECO =~ Im3 + Im4 + Im5
FOOD =~ Im10 + Im14
ATMOS =~ Im20 + Im21 + Im22
PRODQUAL =~ Im11 + Im12 + Im13
CHOICE =~ Im1 + Im2
PROF =~ Im16 + Im19
BRAND =~ Im17 + Im18
FRENCH =~ Im6 + Im7
"fit_CFA <- cfa(model_CFA, data=survey, missing="ML")semPaths(fit_CFA, what = "path", whatLabels = "std", style = "mx",
rotation = 2, layout = "tree3", mar = c(1, 2, 1, 2),
nCharNodes = 7,shapeMan = "rectangle",
sizeMan = 4, sizeMan2 = 3, sizeInt = 2, sizeLat = 6, asize = 1.5,
curvePivot=TRUE, edge.label.cex = .8, edge.color = "skyblue4"
)global_fit_measures <- f_global_fit_measures(fit_CFA)
# check global fit pass/fail of global fit measures
global_fit_measures[[1]]| Value | Result | |
|---|---|---|
| pvalue | 0.000 | FAIL |
| chisq | 259.047 |
|
| cfi | 0.982 | Accept model |
| rmsea | 0.044 | Good fit |
# output full summary
global_fit_measures[[2]]## lavaan 0.6.15 ended normally after 108 iterations
##
## Estimator ML
## Optimization method NLMINB
## Number of model parameters 85
##
## Number of observations 553
## Number of missing patterns 79
##
## Model Test User Model:
##
## Test statistic 259.047
## Degrees of freedom 124
## P-value (Chi-square) 0.000
##
## Model Test Baseline Model:
##
## Test statistic 7474.765
## Degrees of freedom 171
## P-value 0.000
##
## User Model versus Baseline Model:
##
## Comparative Fit Index (CFI) 0.982
## Tucker-Lewis Index (TLI) 0.975
##
## Robust Comparative Fit Index (CFI) 0.981
## Robust Tucker-Lewis Index (TLI) 0.974
##
## Loglikelihood and Information Criteria:
##
## Loglikelihood user model (H0) -12973.111
## Loglikelihood unrestricted model (H1) -12843.588
##
## Akaike (AIC) 26116.223
## Bayesian (BIC) 26483.028
## Sample-size adjusted Bayesian (SABIC) 26213.200
##
## Root Mean Square Error of Approximation:
##
## RMSEA 0.044
## 90 Percent confidence interval - lower 0.037
## 90 Percent confidence interval - upper 0.052
## P-value H_0: RMSEA <= 0.050 0.886
## P-value H_0: RMSEA >= 0.080 0.000
##
## Robust RMSEA 0.045
## 90 Percent confidence interval - lower 0.038
## 90 Percent confidence interval - upper 0.053
## P-value H_0: Robust RMSEA <= 0.050 0.825
## P-value H_0: Robust RMSEA >= 0.080 0.000
##
## Standardized Root Mean Square Residual:
##
## SRMR 0.029
##
## Parameter Estimates:
##
## Standard errors Standard
## Information Observed
## Observed information based on Hessian
##
## Latent Variables:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## DECO =~
## Im3 1.000 1.236 0.937
## Im4 1.056 0.025 42.717 0.000 1.305 0.969
## Im5 0.818 0.034 23.815 0.000 1.011 0.760
## FOOD =~
## Im10 1.000 0.812 0.923
## Im14 1.015 0.036 28.479 0.000 0.824 0.952
## ATMOS =~
## Im20 1.000 1.265 0.845
## Im21 0.849 0.041 20.823 0.000 1.074 0.783
## Im22 1.060 0.047 22.606 0.000 1.340 0.877
## PRODQUAL =~
## Im11 1.000 0.703 0.615
## Im12 1.410 0.094 15.046 0.000 0.991 0.872
## Im13 1.465 0.105 13.968 0.000 1.030 0.855
## CHOICE =~
## Im1 1.000 1.305 0.980
## Im2 0.885 0.033 27.043 0.000 1.155 0.899
## PROF =~
## Im16 1.000 0.921 0.766
## Im19 1.046 0.061 17.170 0.000 0.963 0.856
## BRAND =~
## Im17 1.000 1.204 0.969
## Im18 0.994 0.041 24.143 0.000 1.197 0.856
## FRENCH =~
## Im6 1.000 0.975 0.813
## Im7 1.184 0.071 16.770 0.000 1.155 0.955
##
## Covariances:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## DECO ~~
## FOOD 0.418 0.050 8.393 0.000 0.416 0.416
## ATMOS 0.730 0.082 8.912 0.000 0.467 0.467
## PRODQUAL 0.409 0.051 8.040 0.000 0.471 0.471
## CHOICE 0.711 0.079 9.032 0.000 0.441 0.441
## PROF 0.743 0.071 10.465 0.000 0.653 0.653
## BRAND 0.770 0.076 10.140 0.000 0.517 0.517
## FRENCH 0.402 0.063 6.350 0.000 0.334 0.334
## FOOD ~~
## ATMOS 0.303 0.051 5.948 0.000 0.295 0.295
## PRODQUAL 0.258 0.034 7.662 0.000 0.452 0.452
## CHOICE 0.328 0.050 6.584 0.000 0.309 0.309
## PROF 0.372 0.043 8.589 0.000 0.498 0.498
## BRAND 0.318 0.047 6.801 0.000 0.325 0.325
## FRENCH 0.463 0.047 9.829 0.000 0.585 0.585
## ATMOS ~~
## PRODQUAL 0.372 0.053 7.011 0.000 0.418 0.418
## CHOICE 0.739 0.085 8.728 0.000 0.448 0.448
## PROF 0.557 0.069 8.089 0.000 0.478 0.478
## BRAND 0.787 0.081 9.715 0.000 0.516 0.516
## FRENCH 0.410 0.065 6.352 0.000 0.333 0.333
## PRODQUAL ~~
## CHOICE 0.439 0.054 8.161 0.000 0.478 0.478
## PROF 0.343 0.043 7.946 0.000 0.529 0.529
## BRAND 0.479 0.053 9.046 0.000 0.566 0.566
## FRENCH 0.210 0.037 5.622 0.000 0.306 0.306
## CHOICE ~~
## PROF 0.717 0.072 9.956 0.000 0.597 0.597
## BRAND 0.817 0.079 10.362 0.000 0.519 0.519
## FRENCH 0.286 0.060 4.735 0.000 0.225 0.225
## PROF ~~
## BRAND 0.667 0.066 10.040 0.000 0.601 0.601
## FRENCH 0.328 0.051 6.438 0.000 0.366 0.366
## BRAND ~~
## FRENCH 0.378 0.061 6.175 0.000 0.322 0.322
##
## Intercepts:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## .Im3 4.995 0.056 88.560 0.000 4.995 3.786
## .Im4 4.999 0.057 86.983 0.000 4.999 3.712
## .Im5 5.035 0.057 87.844 0.000 5.035 3.787
## .Im10 6.100 0.037 162.789 0.000 6.100 6.937
## .Im14 6.138 0.037 165.861 0.000 6.138 7.093
## .Im20 4.672 0.064 73.177 0.000 4.672 3.123
## .Im21 5.139 0.058 87.970 0.000 5.139 3.751
## .Im22 4.279 0.065 65.401 0.000 4.279 2.799
## .Im11 5.653 0.049 115.271 0.000 5.653 4.943
## .Im12 5.666 0.049 116.089 0.000 5.666 4.983
## .Im13 5.448 0.052 105.615 0.000 5.448 4.524
## .Im1 4.790 0.057 84.202 0.000 4.790 3.597
## .Im2 4.857 0.055 88.354 0.000 4.857 3.779
## .Im16 5.135 0.052 99.147 0.000 5.135 4.269
## .Im19 5.145 0.048 106.948 0.000 5.145 4.574
## .Im17 5.025 0.053 94.519 0.000 5.025 4.041
## .Im18 4.595 0.060 76.447 0.000 4.595 3.287
## .Im6 5.827 0.051 113.784 0.000 5.827 4.858
## .Im7 5.753 0.052 110.826 0.000 5.753 4.756
## DECO 0.000 0.000 0.000
## FOOD 0.000 0.000 0.000
## ATMOS 0.000 0.000 0.000
## PRODQUAL 0.000 0.000 0.000
## CHOICE 0.000 0.000 0.000
## PROF 0.000 0.000 0.000
## BRAND 0.000 0.000 0.000
## FRENCH 0.000 0.000 0.000
##
## Variances:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## .Im3 0.213 0.024 8.755 0.000 0.213 0.122
## .Im4 0.109 0.024 4.532 0.000 0.109 0.060
## .Im5 0.747 0.049 15.217 0.000 0.747 0.422
## .Im10 0.114 0.019 5.961 0.000 0.114 0.148
## .Im14 0.070 0.019 3.680 0.000 0.070 0.093
## .Im20 0.638 0.061 10.451 0.000 0.638 0.285
## .Im21 0.725 0.057 12.672 0.000 0.725 0.386
## .Im22 0.541 0.063 8.539 0.000 0.541 0.231
## .Im11 0.814 0.055 14.802 0.000 0.814 0.622
## .Im12 0.310 0.040 7.845 0.000 0.310 0.240
## .Im13 0.390 0.045 8.765 0.000 0.390 0.269
## .Im1 0.070 0.050 1.394 0.163 0.070 0.040
## .Im2 0.317 0.044 7.233 0.000 0.317 0.192
## .Im16 0.599 0.052 11.498 0.000 0.599 0.414
## .Im19 0.338 0.045 7.457 0.000 0.338 0.267
## .Im17 0.095 0.045 2.112 0.035 0.095 0.062
## .Im18 0.521 0.055 9.540 0.000 0.521 0.267
## .Im6 0.487 0.056 8.677 0.000 0.487 0.339
## .Im7 0.128 0.067 1.930 0.054 0.128 0.088
## DECO 1.528 0.107 14.326 0.000 1.000 1.000
## FOOD 0.659 0.049 13.328 0.000 1.000 1.000
## ATMOS 1.599 0.138 11.623 0.000 1.000 1.000
## PRODQUAL 0.494 0.067 7.361 0.000 1.000 1.000
## CHOICE 1.704 0.118 14.388 0.000 1.000 1.000
## PROF 0.849 0.088 9.638 0.000 1.000 1.000
## BRAND 1.451 0.104 13.988 0.000 1.000 1.000
## FRENCH 0.952 0.095 10.058 0.000 1.000 1.000
CFI and RMSEA indicate the factor model is good.
We get a very low p-value indicating the covariance matrix generated by the estimated model does not reproduce the empirical sample covariance matrix S generated by our data. We are not sure why we get such a low p-value and from here onwards we decide to ignore it and focus exclusively on CFI and RMSEA global fit assessments.
lambda = inspect(fit_CFA, what="std")$lambda
theta = inspect(fit_CFA, what="std")$theta
psi = inspect(fit_CFA, what="std")$psi# calculate indicator reliabilities (should be larger than 0.4)
indic_rel <- f_indic_rel(lambda, theta)
# pass/fail
indic_rel[[1]]| Result | |
|---|---|
| Individual Item Reliability | Fail |
# details
indic_rel[[2]]## DECO FOOD ATMOS PRODQU CHOICE PROF BRAND FRENCH
## Im3 0.878 NaN NaN NaN NaN NaN NaN NaN
## Im4 0.940 NaN NaN NaN NaN NaN NaN NaN
## Im5 0.578 NaN NaN NaN NaN NaN NaN NaN
## Im10 NaN 0.852 NaN NaN NaN NaN NaN NaN
## Im14 NaN 0.907 NaN NaN NaN NaN NaN NaN
## Im20 NaN NaN 0.715 NaN NaN NaN NaN NaN
## Im21 NaN NaN 0.614 NaN NaN NaN NaN NaN
## Im22 NaN NaN 0.769 NaN NaN NaN NaN NaN
## Im11 NaN NaN NaN 0.378 NaN NaN NaN NaN
## Im12 NaN NaN NaN 0.760 NaN NaN NaN NaN
## Im13 NaN NaN NaN 0.731 NaN NaN NaN NaN
## Im1 NaN NaN NaN NaN 0.960 NaN NaN NaN
## Im2 NaN NaN NaN NaN 0.808 NaN NaN NaN
## Im16 NaN NaN NaN NaN NaN 0.586 NaN NaN
## Im19 NaN NaN NaN NaN NaN 0.733 NaN NaN
## Im17 NaN NaN NaN NaN NaN NaN 0.938 NaN
## Im18 NaN NaN NaN NaN NaN NaN 0.733 NaN
## Im6 NaN NaN NaN NaN NaN NaN NaN 0.661
## Im7 NaN NaN NaN NaN NaN NaN NaN 0.912
We have only one problematic item which is item Im11 with factor Product Quality but its Individual Item Reliability is close enough to the 0.4 limit.
# calculate construct reliability (should be above .6)
construct_rel <- f_construct_rel(lambda,theta)
# pass/fail
construct_rel[[1]]| Result | |
|---|---|
| Construct Reliability | Pass |
# details
construct_rel[[2]]## DECO FOOD ATMOS PRODQUAL CHOICE PROF BRAND
## DECO 0.9215974 NaN NaN NaN NaN NaN NaN
## FOOD NaN 0.9359401 NaN NaN NaN NaN NaN
## ATMOS NaN NaN 0.8742538 NaN NaN NaN NaN
## PRODQUAL NaN NaN NaN 0.8289772 NaN NaN NaN
## CHOICE NaN NaN NaN NaN 0.9384579 NaN NaN
## PROF NaN NaN NaN NaN NaN 0.7945651 NaN
## BRAND NaN NaN NaN NaN NaN NaN 0.910291
## FRENCH NaN NaN NaN NaN NaN NaN NaN
## FRENCH
## DECO NaN
## FOOD NaN
## ATMOS NaN
## PRODQUAL NaN
## CHOICE NaN
## PROF NaN
## BRAND NaN
## FRENCH 0.8799457
# calculate Average Variance Extracted (should be above .5)
AVE <- f_AVE(lambda,theta)
# pass/fail
AVE[[1]]| Result | |
|---|---|
| Average Variance Extracted | Pass |
# details
diag(AVE[[2]])## DECO FOOD ATMOS PRODQUAL CHOICE PROF BRAND FRENCH
## 0.7983933 0.8796192 0.6990218 0.6229770 0.8842421 0.6598497 0.8358722 0.7867070
# correlations between constructs (factors...) should be lower than .7
construct_cor <- f_construct_corr(psi)
# pass / fail
construct_cor[[1]]| Result | |
|---|---|
| Construct Correlations | Pass |
# details
construct_cor[[2]]## DECO FOOD ATMOS PRODQU CHOICE PROF BRAND FRENCH
## DECO 1.000
## FOOD 0.416 1.000
## ATMOS 0.467 0.295 1.000
## PRODQUAL 0.471 0.452 0.418 1.000
## CHOICE 0.441 0.309 0.448 0.478 1.000
## PROF 0.653 0.498 0.478 0.529 0.597 1.000
## BRAND 0.517 0.325 0.516 0.566 0.519 0.601 1.000
## FRENCH 0.334 0.585 0.333 0.306 0.225 0.366 0.322 1.000
# AVE should be higher than squared correlations between constructs
fornell_larcker <- f_fornell_larcker(psi,AVE[[2]])
# pass / fail
fornell_larcker[[1]]| Result | |
|---|---|
| Fornell-Larcker Criteria | Pass |
# details (note: AVE is in the diagonals)
fornell_larcker[[2]]## DECO FOOD ATMOS PRODQU CHOICE PROF BRAND FRENCH
## DECO 0.798
## FOOD 0.173 0.880
## ATMOS 0.218 0.087 0.699
## PRODQUAL 0.222 0.205 0.175 0.623
## CHOICE 0.194 0.096 0.201 0.228 0.884
## PROF 0.426 0.248 0.228 0.280 0.356 0.660
## BRAND 0.268 0.106 0.267 0.321 0.270 0.361 0.836
## FRENCH 0.111 0.343 0.111 0.093 0.051 0.134 0.104 0.787
arrange(modificationindices(fit_CFA),-mi) |> filter(mi>10)## lhs op rhs mi epc sepc.lv sepc.all sepc.nox
## 1 BRAND =~ Im13 23.832 0.220 0.265 0.220 0.220
## 2 Im11 ~~ Im13 21.323 -0.191 -0.191 -0.338 -0.338
## 3 BRAND =~ Im12 17.245 -0.179 -0.216 -0.190 -0.190
## 4 Im21 ~~ Im22 15.139 -0.285 -0.285 -0.455 -0.455
## 5 CHOICE =~ Im20 14.777 -0.151 -0.197 -0.132 -0.132
## 6 CHOICE =~ Im13 13.970 0.133 0.174 0.144 0.144
## 7 Im11 ~~ Im12 13.307 0.145 0.145 0.288 0.288
## 8 FOOD =~ Im11 12.742 0.215 0.174 0.152 0.152
## 9 Im20 ~~ Im21 11.455 0.228 0.228 0.335 0.335
## 10 ATMOS =~ Im12 10.952 -0.115 -0.145 -0.127 -0.127
## 11 Im13 ~~ Im1 10.707 0.068 0.068 0.409 0.409
## 12 CHOICE =~ Im12 10.663 -0.111 -0.145 -0.127 -0.127
All the modification indices are pretty low. In addition, the highest ones would suggest we should move some items around like for example move Im13 to the Brand Image factor, but this actually makes the model worse.
So luckily the model found in the exploratory phase is good enough and we decide to stick with these dimensions which again, are the following:
fact_interpretation <- c("Decoration","Gourmet Food","Relaxed Atmosphere",
"Product Quality","Choice Range","Brand Image",
"Frenchness","Professionalism")
names(fact_interpretation) <- c("MR1","MR2","MR3",
"MR4","MR5","MR6",
"MR7","MR8")
f_factor_interp(PAFn[["8"]], labels,fact_interpretation)| Variable | Label_short | Loads_on | Interpretation |
|---|---|---|---|
| Im15 | Professional Selection of Brands | excluded | |
| Im8 | Expertise in French Traditional Cuisine | excluded | |
| Im9 | French Fashion | excluded | |
| Im3 | Artistic Decoration of Sales Area | MR1 | Decoration |
| Im4 | Creative Decoration of Sales Area | MR1 | Decoration |
| Im5 | Appealing Arrangement of Shop Windows | MR1 | Decoration |
| Im10 | Gourmet Food | MR2 | Gourmet Food |
| Im14 | Gourmet specialities | MR2 | Gourmet Food |
| Im20 | Relaxing Shopping | MR3 | Relaxed Atmosphere |
| Im21 | A Great Place to Stroll | MR3 | Relaxed Atmosphere |
| Im22 | Intimate Shop Atmosphere | MR3 | Relaxed Atmosphere |
| Im11 | High-quality Cosmetics | MR4 | Product Quality |
| Im12 | Luxury brands | MR4 | Product Quality |
| Im13 | Up tp date Designer Brands | MR4 | Product Quality |
| Im1 | Large Assortment | MR5 | Choice Range |
| Im2 | Assortment Variety | MR5 | Choice Range |
| Im17 | Are Trendy | MR6 | Brand Image |
| Im18 | Are Hip | MR6 | Brand Image |
| Im6 | France | MR7 | Frenchness |
| Im7 | French Savoir-vivre | MR7 | Frenchness |
| Im16 | Professional Appearance Towards Customers | MR8 | Professionalism |
| Im19 | Professional Organization | MR8 | Professionalism |
We now want to understand the effect and importance of these dimensions of perception on two variables of interest for the business Repurchase intention and Co-creation intention.
Our model will include 2 mediating variables: Customer Satisfaction and Affective Commitment that interface between the dimensions of perception and variables of interest for the business (the outcome variables of our model).
We start with a full model where perception dimensions can have both direct and indirect effects on the outcome variables.
We include previously excluded variables Im8, Im9, Im15 to see if they might be important for the outcomes. It is not because they cannot be reduced to factors that they cannot potentially be important items influencing the outcomes.
# Full model
model_SEM <- "
DECO =~ Im3 + Im4 + Im5
FOOD =~ Im10 + Im14
ATMOS =~ Im20 + Im21 + Im22
PRODQUAL =~ Im11 + Im12 + Im13
CHOICE =~ Im1 + Im2
PROF =~ Im16 + Im19
BRAND =~ Im17 + Im18
FRENCH =~ Im6 + Im7
AFCOM =~ COM_A1 + COM_A2 + COM_A3 + COM_A4
SAT =~ SAT_1 + SAT_2 + SAT_3
RI =~ C_REP1 + C_REP2 + C_REP3
COI =~ C_CR1 + C_CR3 + C_CR4
SAT ~ s1*DECO + s2*FOOD + s3*ATMOS + s4*PRODQUAL + s5*CHOICE + s6*PROF + s7*BRAND + s8*FRENCH + si8*Im8 + si15*Im15 + si9*Im9
AFCOM ~ a1*DECO + a2*FOOD + a3*ATMOS + a4*PRODQUAL + a5*CHOICE + a6*PROF + a7*BRAND + a8*FRENCH + ai8*Im8 + ai15*Im15 + ai9*Im9
RI ~ rs*SAT + ra*AFCOM + r01*DECO + r02*FOOD + r03*ATMOS + r04*PRODQUAL + r05*CHOICE + r06*PROF + r07*BRAND + r08*FRENCH + r0i8*Im8 + r0i15*Im15 + r0i9*Im9
COI ~ cs*SAT + ca*AFCOM + c01*DECO + c02*FOOD + c03*ATMOS + c04*PRODQUAL + c05*CHOICE + c06*PROF + c07*BRAND + c08*FRENCH + c0i8*Im8 + c0i15*Im15 + c0i9*Im9
rss1:= rs*s1
raa1:= ra*a1
css1:= cs*s1
caa1:= ca*a1
DECOtoRI_total:= r01 + rss1 + raa1
DECOtoCOI_total:= c01 + css1 + caa1
rss2:= rs*s2
raa2:= ra*a2
css2:= cs*s2
caa2:= ca*a2
FOODtoRI_total:= r02 + rss2 + raa2
FOODtoCOI_total:= c02 + css2 + caa2
rss3:= rs*s3
raa3:= ra*a3
css3:= cs*s3
caa3:= ca*a3
ATMOStoRI_total:= r03 + rss3 + raa3
ATMOStoCOI_total:= c03 + css3 + caa3
rss4:= rs*s4
raa4:= ra*a4
css4:= cs*s4
caa4:= ca*a4
PQUALtoRI_total:= r04 + rss4 + raa4
PQUALtoCOI_total:= c04 + css4 + caa4
rss5:= rs*s5
raa5:= ra*a5
css5:= cs*s5
caa5:= ca*a5
CHOICEtoRI_total:= r05 + rss5 + raa5
CHOICEtoCOI_total:= c05 + css5 + caa5
rss6:= rs*s6
raa6:= ra*a6
css6:= cs*s6
caa6:= ca*a6
PROFtoRI_total:= r06 + rss6 + raa6
PROFtoCOI_total:= c06 + css6 + caa6
rss7:= rs*s7
raa7:= ra*a7
css7:= cs*s7
caa7:= ca*a7
BRANDtoRI_total:= r07 + rss7 + raa7
BRANDtoCOI_total:= c07 + css7 + caa7
rss8:= rs*s8
raa8:= ra*a8
css8:= cs*s8
caa8:= ca*a8
FRENCHtoRI_total:= r08 + rss8 + raa8
FRENCHtoCOI_total:= c08 + css8 + caa8
rssi8:= rs*si8
raai8:= ra*ai8
cssi8:= cs*si8
caai8:= ca*ai8
Im8toRI_total:= r0i8 + rssi8 + raai8
Im8toCOI_total:= c0i8 + cssi8 + caai8
rssi9:= rs*si9
raai9:= ra*ai9
cssi9:= cs*si9
caai9:= ca*ai9
Im9toRI_total:= r0i9 + rssi9 + raai9
Im9toCOI_total:= c0i9 + cssi9 + caai9
rssi15:= rs*si15
raai15:= ra*ai15
cssi15:= cs*si15
caai15:= ca*ai15
Im15toRI_total:= r0i15 + rssi15 + raai15
Im15toCOI_total:= c0i15 + cssi15 + caai15
"fit_SEM <- cfa(model_SEM, data=survey, missing="ML")semPaths(fit_SEM, what = "col", whatLabels = "par", style = "ram",
rotation = 2, layout = "tree3",
mar = c(1, 2, 1, 2), #margins
nCharNodes = 7,
shapeMan = "rectangle", # variable shape
sizeMan = 4, # variable shape size
sizeMan2 = 3, # variable shape vertical stretch
# structural = T, # don't plot image variables (manifests)
sizeInt = 1, # intercept size
intercepts = F, # don't include intercepts
sizeLat = 5, #factor size
asize = 2, # arrow size
curvePivot=T, # edge broken curve
edge.label.cex = .5, # edge label size
# edge.color = "skyblue4",
# levels= c(1,2,7,8,9,10),
groups = "latents",
cut = .5 #cutoff for edges,
)Let us now assess this model
global_fit_measures <- f_global_fit_measures(fit_SEM)
# check global fit pass/fail of global fit measures
global_fit_measures[[1]]| Value | Result | |
|---|---|---|
| pvalue | 0.000 | FAIL |
| chisq | 1863.685 |
|
| cfi | 0.886 | Definitely reject the model |
| rmsea | 0.074 | Acceptable fit |
# output full summary
global_fit_measures[[2]]## lavaan 0.6.15 ended normally after 176 iterations
##
## Estimator ML
## Optimization method NLMINB
## Number of model parameters 173
##
## Used Total
## Number of observations 523 553
## Number of missing patterns 116
##
## Model Test User Model:
##
## Test statistic 1863.685
## Degrees of freedom 483
## P-value (Chi-square) 0.000
##
## Model Test Baseline Model:
##
## Test statistic 12715.671
## Degrees of freedom 592
## P-value 0.000
##
## User Model versus Baseline Model:
##
## Comparative Fit Index (CFI) 0.886
## Tucker-Lewis Index (TLI) 0.860
##
## Robust Comparative Fit Index (CFI) 0.888
## Robust Tucker-Lewis Index (TLI) 0.863
##
## Loglikelihood and Information Criteria:
##
## Loglikelihood user model (H0) -21205.949
## Loglikelihood unrestricted model (H1) -20274.106
##
## Akaike (AIC) 42757.897
## Bayesian (BIC) 43494.805
## Sample-size adjusted Bayesian (SABIC) 42945.662
##
## Root Mean Square Error of Approximation:
##
## RMSEA 0.074
## 90 Percent confidence interval - lower 0.070
## 90 Percent confidence interval - upper 0.077
## P-value H_0: RMSEA <= 0.050 0.000
## P-value H_0: RMSEA >= 0.080 0.002
##
## Robust RMSEA 0.074
## 90 Percent confidence interval - lower 0.071
## 90 Percent confidence interval - upper 0.078
## P-value H_0: Robust RMSEA <= 0.050 0.000
## P-value H_0: Robust RMSEA >= 0.080 0.007
##
## Standardized Root Mean Square Residual:
##
## SRMR 0.137
##
## Parameter Estimates:
##
## Standard errors Standard
## Information Observed
## Observed information based on Hessian
##
## Latent Variables:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## DECO =~
## Im3 1.000 1.247 0.942
## Im4 1.049 0.025 42.420 0.000 1.309 0.967
## Im5 0.802 0.034 23.246 0.000 1.000 0.757
## FOOD =~
## Im10 1.000 0.822 0.927
## Im14 1.001 0.035 28.365 0.000 0.824 0.954
## ATMOS =~
## Im20 1.000 1.256 0.845
## Im21 0.853 0.042 20.438 0.000 1.071 0.783
## Im22 1.079 0.047 23.137 0.000 1.356 0.886
## PRODQUAL =~
## Im11 1.000 0.712 0.619
## Im12 1.385 0.093 14.902 0.000 0.986 0.872
## Im13 1.450 0.104 13.935 0.000 1.033 0.858
## CHOICE =~
## Im1 1.000 1.297 0.976
## Im2 0.886 0.033 26.860 0.000 1.149 0.899
## PROF =~
## Im16 1.000 0.929 0.768
## Im19 1.042 0.059 17.538 0.000 0.968 0.854
## BRAND =~
## Im17 1.000 1.204 0.968
## Im18 0.996 0.042 23.568 0.000 1.200 0.857
## FRENCH =~
## Im6 1.000 0.975 0.810
## Im7 1.192 0.072 16.507 0.000 1.162 0.960
## AFCOM =~
## COM_A1 1.000 1.116 0.789
## COM_A2 1.171 0.056 21.068 0.000 1.307 0.829
## COM_A3 1.154 0.059 19.566 0.000 1.288 0.811
## COM_A4 1.291 0.063 20.389 0.000 1.441 0.840
## SAT =~
## SAT_1 1.000 0.845 0.855
## SAT_2 0.940 0.050 18.659 0.000 0.795 0.807
## SAT_3 0.841 0.054 15.434 0.000 0.711 0.643
## RI =~
## C_REP1 1.000 0.588 0.806
## C_REP2 0.982 0.045 21.739 0.000 0.577 0.934
## C_REP3 0.719 0.038 18.680 0.000 0.422 0.761
## COI =~
## C_CR1 1.000 1.682 0.851
## C_CR3 1.029 0.052 19.721 0.000 1.730 0.829
## C_CR4 0.958 0.050 19.155 0.000 1.610 0.805
##
## Regressions:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## SAT ~
## DECO (s1) -0.098 0.044 -2.242 0.025 -0.144 -0.144
## FOOD (s2) 0.077 0.073 1.053 0.292 0.075 0.075
## ATMOS (s3) 0.035 0.039 0.882 0.378 0.052 0.052
## PRODQUA (s4) -0.044 0.079 -0.559 0.576 -0.037 -0.037
## CHOICE (s5) 0.118 0.042 2.775 0.006 0.181 0.181
## PROF (s6) 0.404 0.091 4.454 0.000 0.444 0.444
## BRAND (s7) 0.019 0.046 0.422 0.673 0.028 0.028
## FRENCH (s8) 0.076 0.059 1.301 0.193 0.088 0.088
## Im8 (si8) 0.032 0.055 0.595 0.552 0.038 0.040
## Im15 (si15) 0.057 0.046 1.252 0.210 0.068 0.081
## Im9 (si9) 0.002 0.033 0.073 0.942 0.003 0.004
## AFCOM ~
## DECO (a1) -0.020 0.056 -0.363 0.717 -0.023 -0.023
## FOOD (a2) 0.009 0.095 0.092 0.926 0.006 0.006
## ATMOS (a3) 0.374 0.054 6.929 0.000 0.421 0.421
## PRODQUA (a4) -0.195 0.104 -1.876 0.061 -0.124 -0.124
## CHOICE (a5) 0.086 0.055 1.555 0.120 0.100 0.100
## PROF (a6) 0.128 0.112 1.140 0.254 0.107 0.107
## BRAND (a7) -0.016 0.060 -0.272 0.785 -0.018 -0.018
## FRENCH (a8) 0.162 0.077 2.099 0.036 0.142 0.142
## Im8 (ai8) 0.067 0.072 0.932 0.351 0.060 0.063
## Im15 (ai15) 0.024 0.060 0.401 0.689 0.021 0.026
## Im9 (ai9) 0.022 0.044 0.508 0.612 0.020 0.027
## RI ~
## SAT (rs) 0.191 0.044 4.322 0.000 0.275 0.275
## AFCOM (ra) 0.186 0.030 6.163 0.000 0.353 0.353
## DECO (r01) 0.007 0.029 0.228 0.820 0.014 0.014
## FOOD (r02) 0.009 0.049 0.178 0.858 0.012 0.012
## ATMOS (r03) 0.039 0.029 1.344 0.179 0.083 0.083
## PRODQUA (r04) 0.116 0.053 2.198 0.028 0.141 0.141
## CHOICE (r05) -0.020 0.028 -0.737 0.461 -0.045 -0.045
## PROF (r06) -0.019 0.061 -0.311 0.756 -0.030 -0.030
## BRAND (r07) 0.007 0.030 0.243 0.808 0.015 0.015
## FRENCH (r08) -0.037 0.039 -0.942 0.346 -0.061 -0.061
## Im8 (r0i8) 0.047 0.037 1.276 0.202 0.079 0.083
## Im15 (r015) -0.005 0.030 -0.154 0.878 -0.008 -0.009
## Im9 (r0i9) -0.047 0.022 -2.110 0.035 -0.081 -0.109
## COI ~
## SAT (cs) -0.361 0.134 -2.705 0.007 -0.182 -0.182
## AFCOM (ca) 0.539 0.093 5.810 0.000 0.358 0.358
## DECO (c01) 0.014 0.093 0.155 0.877 0.011 0.011
## FOOD (c02) -0.058 0.154 -0.377 0.706 -0.028 -0.028
## ATMOS (c03) 0.146 0.092 1.593 0.111 0.109 0.109
## PRODQUA (c04) 0.260 0.168 1.545 0.122 0.110 0.110
## CHOICE (c05) -0.005 0.089 -0.053 0.957 -0.004 -0.004
## PROF (c06) -0.200 0.193 -1.033 0.302 -0.110 -0.110
## BRAND (c07) 0.036 0.096 0.376 0.707 0.026 0.026
## FRENCH (c08) -0.107 0.125 -0.862 0.388 -0.062 -0.062
## Im8 (c0i8) -0.016 0.116 -0.138 0.890 -0.010 -0.010
## Im15 (c015) -0.057 0.098 -0.581 0.561 -0.034 -0.040
## Im9 (c0i9) -0.016 0.072 -0.222 0.825 -0.009 -0.013
##
## Covariances:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## DECO ~~
## FOOD 0.425 0.052 8.167 0.000 0.414 0.414
## ATMOS 0.738 0.084 8.773 0.000 0.471 0.471
## PRODQUAL 0.418 0.053 7.874 0.000 0.471 0.471
## CHOICE 0.731 0.081 8.987 0.000 0.452 0.452
## PROF 0.767 0.074 10.398 0.000 0.662 0.662
## BRAND 0.785 0.079 9.990 0.000 0.523 0.523
## FRENCH 0.409 0.066 6.243 0.000 0.337 0.337
## FOOD ~~
## ATMOS 0.308 0.052 5.887 0.000 0.298 0.298
## PRODQUAL 0.263 0.035 7.452 0.000 0.448 0.448
## CHOICE 0.310 0.051 6.054 0.000 0.291 0.291
## PROF 0.386 0.045 8.516 0.000 0.505 0.505
## BRAND 0.322 0.048 6.639 0.000 0.325 0.325
## FRENCH 0.471 0.049 9.658 0.000 0.587 0.587
## ATMOS ~~
## PRODQUAL 0.389 0.055 7.110 0.000 0.435 0.435
## CHOICE 0.752 0.086 8.722 0.000 0.462 0.462
## PROF 0.554 0.070 7.941 0.000 0.475 0.475
## BRAND 0.795 0.083 9.629 0.000 0.526 0.526
## FRENCH 0.409 0.066 6.222 0.000 0.334 0.334
## PRODQUAL ~~
## CHOICE 0.443 0.055 8.006 0.000 0.480 0.480
## PROF 0.358 0.045 7.902 0.000 0.541 0.541
## BRAND 0.481 0.055 8.826 0.000 0.561 0.561
## FRENCH 0.217 0.039 5.608 0.000 0.313 0.313
## CHOICE ~~
## PROF 0.728 0.074 9.819 0.000 0.605 0.605
## BRAND 0.805 0.080 10.022 0.000 0.516 0.516
## FRENCH 0.272 0.061 4.438 0.000 0.215 0.215
## PROF ~~
## BRAND 0.672 0.068 9.851 0.000 0.601 0.601
## FRENCH 0.333 0.053 6.323 0.000 0.367 0.367
## BRAND ~~
## FRENCH 0.373 0.063 5.938 0.000 0.318 0.318
## .RI ~~
## .COI -0.025 0.039 -0.630 0.529 -0.034 -0.034
##
## Intercepts:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## .Im3 4.983 0.058 85.740 0.000 4.983 3.762
## .Im4 4.995 0.059 84.295 0.000 4.995 3.692
## .Im5 5.049 0.058 86.541 0.000 5.049 3.823
## .Im10 6.093 0.039 156.804 0.000 6.093 6.865
## .Im14 6.139 0.038 161.829 0.000 6.139 7.109
## .Im20 4.705 0.065 72.271 0.000 4.705 3.166
## .Im21 5.163 0.060 86.178 0.000 5.163 3.775
## .Im22 4.305 0.067 63.987 0.000 4.305 2.814
## .Im11 5.652 0.051 111.594 0.000 5.652 4.907
## .Im12 5.666 0.050 113.818 0.000 5.666 5.010
## .Im13 5.450 0.053 103.088 0.000 5.450 4.526
## .Im1 4.808 0.058 82.565 0.000 4.808 3.618
## .Im2 4.878 0.056 86.961 0.000 4.878 3.814
## .Im16 5.150 0.053 96.420 0.000 5.150 4.260
## .Im19 5.158 0.050 103.711 0.000 5.158 4.551
## .Im17 5.044 0.054 92.559 0.000 5.044 4.056
## .Im18 4.603 0.062 74.674 0.000 4.603 3.289
## .Im6 5.821 0.053 110.235 0.000 5.821 4.835
## .Im7 5.760 0.053 108.103 0.000 5.760 4.761
## .COM_A1 3.662 0.540 6.781 0.000 3.662 2.590
## .COM_A2 3.159 0.632 4.997 0.000 3.159 2.005
## .COM_A3 2.819 0.623 4.525 0.000 2.819 1.774
## .COM_A4 2.658 0.695 3.823 0.000 2.658 1.550
## .SAT_1 4.845 0.411 11.786 0.000 4.845 4.902
## .SAT_2 5.012 0.385 13.012 0.000 5.012 5.088
## .SAT_3 5.054 0.347 14.556 0.000 5.054 4.573
## .C_REP1 4.047 0.293 13.797 0.000 4.047 5.552
## .C_REP2 4.280 0.287 14.889 0.000 4.280 6.927
## .C_REP3 4.505 0.211 21.340 0.000 4.505 8.120
## .C_CR1 3.002 0.913 3.289 0.001 3.002 1.519
## .C_CR3 3.603 0.939 3.836 0.000 3.603 1.726
## .C_CR4 3.101 0.874 3.547 0.000 3.101 1.549
## DECO 0.000 0.000 0.000
## FOOD 0.000 0.000 0.000
## ATMOS 0.000 0.000 0.000
## PRODQUAL 0.000 0.000 0.000
## CHOICE 0.000 0.000 0.000
## PROF 0.000 0.000 0.000
## BRAND 0.000 0.000 0.000
## FRENCH 0.000 0.000 0.000
## .AFCOM 0.000 0.000 0.000
## .SAT 0.000 0.000 0.000
## .RI 0.000 0.000 0.000
## .COI 0.000 0.000 0.000
##
## Variances:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## .Im3 0.198 0.025 8.058 0.000 0.198 0.113
## .Im4 0.118 0.025 4.775 0.000 0.118 0.064
## .Im5 0.744 0.050 14.899 0.000 0.744 0.427
## .Im10 0.111 0.020 5.669 0.000 0.111 0.141
## .Im14 0.068 0.019 3.580 0.000 0.068 0.091
## .Im20 0.630 0.059 10.704 0.000 0.630 0.285
## .Im21 0.724 0.058 12.566 0.000 0.724 0.387
## .Im22 0.503 0.061 8.276 0.000 0.503 0.215
## .Im11 0.819 0.057 14.460 0.000 0.819 0.617
## .Im12 0.306 0.039 7.837 0.000 0.306 0.239
## .Im13 0.382 0.045 8.579 0.000 0.382 0.264
## .Im1 0.084 0.049 1.705 0.088 0.084 0.048
## .Im2 0.314 0.043 7.277 0.000 0.314 0.192
## .Im16 0.599 0.052 11.542 0.000 0.599 0.409
## .Im19 0.347 0.045 7.745 0.000 0.347 0.270
## .Im17 0.097 0.046 2.105 0.035 0.097 0.063
## .Im18 0.520 0.056 9.255 0.000 0.520 0.265
## .Im6 0.498 0.057 8.699 0.000 0.498 0.344
## .Im7 0.113 0.068 1.666 0.096 0.113 0.077
## .COM_A1 0.754 0.060 12.580 0.000 0.754 0.377
## .COM_A2 0.776 0.067 11.552 0.000 0.776 0.312
## .COM_A3 0.866 0.071 12.145 0.000 0.866 0.343
## .COM_A4 0.863 0.077 11.218 0.000 0.863 0.294
## .SAT_1 0.262 0.034 7.705 0.000 0.262 0.268
## .SAT_2 0.338 0.034 9.853 0.000 0.338 0.349
## .SAT_3 0.716 0.053 13.634 0.000 0.716 0.586
## .C_REP1 0.186 0.016 11.320 0.000 0.186 0.350
## .C_REP2 0.049 0.011 4.657 0.000 0.049 0.128
## .C_REP3 0.129 0.009 13.622 0.000 0.129 0.420
## .C_CR1 1.076 0.119 9.063 0.000 1.076 0.276
## .C_CR3 1.362 0.134 10.152 0.000 1.362 0.313
## .C_CR4 1.412 0.128 11.028 0.000 1.412 0.353
## DECO 1.556 0.110 14.096 0.000 1.000 1.000
## FOOD 0.676 0.052 13.094 0.000 1.000 1.000
## ATMOS 1.578 0.138 11.424 0.000 1.000 1.000
## PRODQUAL 0.508 0.070 7.277 0.000 1.000 1.000
## CHOICE 1.681 0.120 14.033 0.000 1.000 1.000
## PROF 0.863 0.090 9.550 0.000 1.000 1.000
## BRAND 1.449 0.106 13.646 0.000 1.000 1.000
## FRENCH 0.951 0.097 9.789 0.000 1.000 1.000
## .AFCOM 0.884 0.090 9.820 0.000 0.710 0.710
## .SAT 0.459 0.049 9.461 0.000 0.642 0.642
## .RI 0.232 0.022 10.542 0.000 0.672 0.672
## .COI 2.331 0.219 10.631 0.000 0.824 0.824
##
## Defined Parameters:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## rss1 -0.019 0.009 -1.984 0.047 -0.040 -0.040
## raa1 -0.004 0.010 -0.362 0.717 -0.008 -0.008
## css1 0.035 0.020 1.737 0.082 0.026 0.026
## caa1 -0.011 0.030 -0.362 0.717 -0.008 -0.008
## DECOtoRI_total -0.016 0.031 -0.517 0.605 -0.034 -0.034
## DECOtoCOI_totl 0.039 0.095 0.408 0.683 0.029 0.029
## rss2 0.015 0.014 1.022 0.307 0.021 0.021
## raa2 0.002 0.018 0.092 0.926 0.002 0.002
## css2 -0.028 0.028 -0.979 0.327 -0.014 -0.014
## caa2 0.005 0.051 0.092 0.926 0.002 0.002
## FOODtoRI_total 0.025 0.052 0.479 0.632 0.035 0.035
## FOODtoCOI_totl -0.081 0.161 -0.504 0.614 -0.040 -0.040
## rss3 0.007 0.008 0.867 0.386 0.014 0.014
## raa3 0.069 0.015 4.716 0.000 0.148 0.148
## css3 -0.013 0.015 -0.834 0.404 -0.009 -0.009
## caa3 0.201 0.044 4.567 0.000 0.150 0.150
## ATMOStoRI_totl 0.115 0.029 3.970 0.000 0.246 0.246
## ATMOStoCOI_ttl 0.335 0.088 3.801 0.000 0.250 0.250
## rss4 -0.008 0.015 -0.553 0.580 -0.010 -0.010
## raa4 -0.036 0.020 -1.786 0.074 -0.044 -0.044
## css4 0.016 0.029 0.549 0.583 0.007 0.007
## caa4 -0.105 0.059 -1.779 0.075 -0.044 -0.044
## PQUALtoRI_totl 0.072 0.056 1.283 0.199 0.087 0.087
## PQUALtoCOI_ttl 0.171 0.173 0.984 0.325 0.072 0.072
## rss5 0.023 0.010 2.369 0.018 0.050 0.050
## raa5 0.016 0.011 1.509 0.131 0.035 0.035
## css5 -0.043 0.022 -1.930 0.054 -0.033 -0.033
## caa5 0.046 0.031 1.510 0.131 0.036 0.036
## CHOICEtoRI_ttl 0.018 0.030 0.612 0.541 0.040 0.040
## CHOICEtCOI_ttl -0.001 0.093 -0.013 0.990 -0.001 -0.001
## rss6 0.077 0.025 3.070 0.002 0.122 0.122
## raa6 0.024 0.021 1.123 0.262 0.038 0.038
## css6 -0.146 0.062 -2.350 0.019 -0.081 -0.081
## caa6 0.069 0.062 1.112 0.266 0.038 0.038
## PROFtoRI_total 0.082 0.061 1.344 0.179 0.130 0.130
## PROFtoCOI_totl -0.277 0.185 -1.492 0.136 -0.153 -0.153
## rss7 0.004 0.009 0.419 0.675 0.008 0.008
## raa7 -0.003 0.011 -0.272 0.786 -0.006 -0.006
## css7 -0.007 0.017 -0.417 0.677 -0.005 -0.005
## caa7 -0.009 0.032 -0.272 0.786 -0.006 -0.006
## BRANDtoRI_totl 0.008 0.032 0.247 0.805 0.016 0.016
## BRANDtoCOI_ttl 0.020 0.101 0.203 0.839 0.015 0.015
## rss8 0.015 0.012 1.246 0.213 0.024 0.024
## raa8 0.030 0.015 1.990 0.047 0.050 0.050
## css8 -0.028 0.023 -1.178 0.239 -0.016 -0.016
## caa8 0.088 0.044 1.973 0.048 0.051 0.051
## FRENCHtoRI_ttl 0.008 0.042 0.194 0.846 0.013 0.013
## FRENCHtCOI_ttl -0.047 0.129 -0.368 0.713 -0.028 -0.028
## rssi8 0.006 0.011 0.591 0.555 0.011 0.011
## raai8 0.012 0.013 0.923 0.356 0.021 0.022
## cssi8 -0.012 0.020 -0.580 0.562 -0.007 -0.007
## caai8 0.036 0.039 0.923 0.356 0.021 0.023
## Im8toRI_total 0.065 0.039 1.666 0.096 0.111 0.117
## Im8toCOI_total 0.008 0.122 0.068 0.946 0.005 0.005
## rssi9 0.000 0.006 0.073 0.942 0.001 0.001
## raai9 0.004 0.008 0.506 0.613 0.007 0.010
## cssi9 -0.001 0.012 -0.073 0.942 -0.001 -0.001
## caai9 0.012 0.024 0.506 0.613 0.007 0.010
## Im9toRI_total -0.043 0.024 -1.782 0.075 -0.073 -0.099
## Im9toCOI_total -0.005 0.075 -0.063 0.950 -0.003 -0.004
## rssi15 0.011 0.009 1.212 0.226 0.019 0.022
## raai15 0.004 0.011 0.400 0.689 0.008 0.009
## cssi15 -0.021 0.018 -1.137 0.256 -0.012 -0.015
## caai15 0.013 0.032 0.400 0.689 0.008 0.009
## Im15toRI_total 0.011 0.033 0.330 0.742 0.018 0.022
## Im15toCOI_totl -0.065 0.102 -0.631 0.528 -0.038 -0.046
lambda = inspect(fit_SEM, what="std")$lambda
theta = inspect(fit_SEM, what="std")$theta
psi = inspect(fit_SEM, what="std")$psi# calculate indicator reliabilities (should be larger than 0.4)
indic_rel <- f_indic_rel(lambda, theta)
# pass/fail
indic_rel[[1]]| Result | |
|---|---|
| Individual Item Reliability | Fail |
# details
indic_rel[[2]]## DECO FOOD ATMOS PRODQU CHOICE PROF BRAND FRENCH AFCOM SAT RI
## Im3 0.887 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
## Im4 0.936 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
## Im5 0.573 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
## Im10 NaN 0.859 NaN NaN NaN NaN NaN NaN NaN NaN NaN
## Im14 NaN 0.909 NaN NaN NaN NaN NaN NaN NaN NaN NaN
## Im20 NaN NaN 0.715 NaN NaN NaN NaN NaN NaN NaN NaN
## Im21 NaN NaN 0.613 NaN NaN NaN NaN NaN NaN NaN NaN
## Im22 NaN NaN 0.785 NaN NaN NaN NaN NaN NaN NaN NaN
## Im11 NaN NaN NaN 0.383 NaN NaN NaN NaN NaN NaN NaN
## Im12 NaN NaN NaN 0.761 NaN NaN NaN NaN NaN NaN NaN
## Im13 NaN NaN NaN 0.736 NaN NaN NaN NaN NaN NaN NaN
## Im1 NaN NaN NaN NaN 0.952 NaN NaN NaN NaN NaN NaN
## Im2 NaN NaN NaN NaN 0.808 NaN NaN NaN NaN NaN NaN
## Im16 NaN NaN NaN NaN NaN 0.591 NaN NaN NaN NaN NaN
## Im19 NaN NaN NaN NaN NaN 0.730 NaN NaN NaN NaN NaN
## Im17 NaN NaN NaN NaN NaN NaN 0.937 NaN NaN NaN NaN
## Im18 NaN NaN NaN NaN NaN NaN 0.735 NaN NaN NaN NaN
## Im6 NaN NaN NaN NaN NaN NaN NaN 0.656 NaN NaN NaN
## Im7 NaN NaN NaN NaN NaN NaN NaN 0.923 NaN NaN NaN
## COM_A1 NaN NaN NaN NaN NaN NaN NaN NaN 0.623 NaN NaN
## COM_A2 NaN NaN NaN NaN NaN NaN NaN NaN 0.688 NaN NaN
## COM_A3 NaN NaN NaN NaN NaN NaN NaN NaN 0.657 NaN NaN
## COM_A4 NaN NaN NaN NaN NaN NaN NaN NaN 0.706 NaN NaN
## SAT_1 NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.732 NaN
## SAT_2 NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.651 NaN
## SAT_3 NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.414 NaN
## C_REP1 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.650
## C_REP2 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.872
## C_REP3 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.580
## C_CR1 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
## C_CR3 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
## C_CR4 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
## Im8 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
## Im15 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
## Im9 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
## COI Im8 Im15 Im9
## Im3 NaN NaN NaN NaN
## Im4 NaN NaN NaN NaN
## Im5 NaN NaN NaN NaN
## Im10 NaN NaN NaN NaN
## Im14 NaN NaN NaN NaN
## Im20 NaN NaN NaN NaN
## Im21 NaN NaN NaN NaN
## Im22 NaN NaN NaN NaN
## Im11 NaN NaN NaN NaN
## Im12 NaN NaN NaN NaN
## Im13 NaN NaN NaN NaN
## Im1 NaN NaN NaN NaN
## Im2 NaN NaN NaN NaN
## Im16 NaN NaN NaN NaN
## Im19 NaN NaN NaN NaN
## Im17 NaN NaN NaN NaN
## Im18 NaN NaN NaN NaN
## Im6 NaN NaN NaN NaN
## Im7 NaN NaN NaN NaN
## COM_A1 NaN NaN NaN NaN
## COM_A2 NaN NaN NaN NaN
## COM_A3 NaN NaN NaN NaN
## COM_A4 NaN NaN NaN NaN
## SAT_1 NaN NaN NaN NaN
## SAT_2 NaN NaN NaN NaN
## SAT_3 NaN NaN NaN NaN
## C_REP1 NaN NaN NaN NaN
## C_REP2 NaN NaN NaN NaN
## C_REP3 NaN NaN NaN NaN
## C_CR1 0.724 NaN NaN NaN
## C_CR3 0.687 NaN NaN NaN
## C_CR4 0.647 NaN NaN NaN
## Im8 NaN 1 NaN NaN
## Im15 NaN NaN 1 NaN
## Im9 NaN NaN NaN 1
# calculate construct reliability (should be above .6)
construct_rel <- f_construct_rel(lambda,theta)
# pass/fail
construct_rel[[1]]| Result | |
|---|---|
| Construct Reliability | Pass |
# details
construct_rel[[2]]## DECO FOOD ATMOS PRODQUAL CHOICE PROF BRAND
## DECO 0.921686 NaN NaN NaN NaN NaN NaN
## FOOD NaN 0.938467 NaN NaN NaN NaN NaN
## ATMOS NaN NaN 0.8769271 NaN NaN NaN NaN
## PRODQUAL NaN NaN NaN 0.8312694 NaN NaN NaN
## CHOICE NaN NaN NaN NaN 0.9361559 NaN NaN
## PROF NaN NaN NaN NaN NaN 0.7947441 NaN
## BRAND NaN NaN NaN NaN NaN NaN 0.9102652
## FRENCH NaN NaN NaN NaN NaN NaN NaN
## AFCOM NaN NaN NaN NaN NaN NaN NaN
## SAT NaN NaN NaN NaN NaN NaN NaN
## RI NaN NaN NaN NaN NaN NaN NaN
## COI NaN NaN NaN NaN NaN NaN NaN
## Im8 NaN NaN NaN NaN NaN NaN NaN
## Im15 NaN NaN NaN NaN NaN NaN NaN
## Im9 NaN NaN NaN NaN NaN NaN NaN
## FRENCH AFCOM SAT RI COI Im8 Im15 Im9
## DECO NaN NaN NaN NaN NaN NaN NaN NaN
## FOOD NaN NaN NaN NaN NaN NaN NaN NaN
## ATMOS NaN NaN NaN NaN NaN NaN NaN NaN
## PRODQUAL NaN NaN NaN NaN NaN NaN NaN NaN
## CHOICE NaN NaN NaN NaN NaN NaN NaN NaN
## PROF NaN NaN NaN NaN NaN NaN NaN NaN
## BRAND NaN NaN NaN NaN NaN NaN NaN NaN
## FRENCH 0.8815253 NaN NaN NaN NaN NaN NaN NaN
## AFCOM NaN 0.8896815 NaN NaN NaN NaN NaN NaN
## SAT NaN NaN 0.8154708 NaN NaN NaN NaN NaN
## RI NaN NaN NaN 0.8744045 NaN NaN NaN NaN
## COI NaN NaN NaN NaN 0.8677621 NaN NaN NaN
## Im8 NaN NaN NaN NaN NaN 1 NaN NaN
## Im15 NaN NaN NaN NaN NaN NaN 1 NaN
## Im9 NaN NaN NaN NaN NaN NaN NaN 1
# calculate Average Variance Extracted (should be above .5)
AVE <- f_AVE(lambda,theta)
# pass/fail
AVE[[1]]| Result | |
|---|---|
| Average Variance Extracted | Pass |
# details
diag(AVE[[2]])## DECO FOOD ATMOS PRODQUAL CHOICE PROF BRAND FRENCH
## 0.7986537 0.8840885 0.7042434 0.6266576 0.8801527 0.6600238 0.8358149 0.7893477
## AFCOM SAT RI COI Im8 Im15 Im9
## 0.6685779 0.5989777 0.7004635 0.6863754 1.0000000 1.0000000 1.0000000
# correlations between constructs (factors...) should be lower than .7
construct_cor <- f_construct_corr(psi)
# pass / fail
construct_cor[[1]]| Result | |
|---|---|
| Construct Correlations | Pass |
# details
construct_cor[[2]]## DECO FOOD ATMOS PRODQU CHOICE PROF BRAND FRENCH AFCOM SAT
## DECO 1.000
## FOOD 0.414 1.000
## ATMOS 0.471 0.298 1.000
## PRODQUAL 0.471 0.448 0.435 1.000
## CHOICE 0.452 0.291 0.462 0.480 1.000
## PROF 0.662 0.505 0.475 0.541 0.605 1.000
## BRAND 0.523 0.325 0.526 0.561 0.516 0.601 1.000
## FRENCH 0.337 0.587 0.334 0.313 0.215 0.367 0.318 1.000
## AFCOM 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.710
## SAT 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.642
## RI 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000
## COI 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000
## Im8 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000
## Im15 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000
## Im9 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000
## RI COI Im8 Im15 Im9
## DECO
## FOOD
## ATMOS
## PRODQUAL
## CHOICE
## PROF
## BRAND
## FRENCH
## AFCOM
## SAT
## RI 0.672
## COI -0.034 0.824
## Im8 0.000 0.000 1.000
## Im15 0.000 0.000 0.342 1.000
## Im9 0.000 0.000 0.442 0.397 1.000
# AVE should be higher than squared correlations between constructs
fornell_larcker <- f_fornell_larcker(psi,AVE[[2]])
# pass / fail
fornell_larcker[[1]]| Result | |
|---|---|
| Fornell-Larcker Criteria | Pass |
# details (note: AVE is in the diagonals)
fornell_larcker[[2]]## DECO FOOD ATMOS PRODQU CHOICE PROF BRAND FRENCH AFCOM SAT RI
## DECO 0.799
## FOOD 0.172 0.884
## ATMOS 0.222 0.089 0.704
## PRODQUAL 0.222 0.201 0.189 0.627
## CHOICE 0.204 0.085 0.213 0.230 0.880
## PROF 0.438 0.255 0.225 0.293 0.366 0.660
## BRAND 0.273 0.106 0.276 0.315 0.266 0.361 0.836
## FRENCH 0.113 0.344 0.111 0.098 0.046 0.135 0.101 0.789
## AFCOM 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.669
## SAT 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.599
## RI 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.700
## COI 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.001
## Im8 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000
## Im15 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000
## Im9 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000
## COI Im8 Im15 Im9
## DECO
## FOOD
## ATMOS
## PRODQUAL
## CHOICE
## PROF
## BRAND
## FRENCH
## AFCOM
## SAT
## RI
## COI 0.686
## Im8 0.000 1.000
## Im15 0.000 0.117 1.000
## Im9 0.000 0.195 0.158 1.000
arrange(modificationindices(fit_SEM),-mi) |> filter(mi>10)## lhs op rhs mi epc sepc.lv sepc.all sepc.nox
## 1 Im15 ~ CHOICE 183.159 0.499 0.648 0.543 0.543
## 2 Im8 ~ FOOD 165.172 0.650 0.534 0.509 0.509
## 3 Im15 ~ PROF 144.405 0.658 0.611 0.513 0.513
## 4 Im15 ~ SAT 141.622 1.178 0.996 0.836 0.836
## 5 Im8 ~ FRENCH 131.111 0.492 0.480 0.457 0.457
## 6 Im15 ~ RI 126.703 2.198 1.291 1.084 1.084
## 7 Im15 ~ BRAND 87.447 0.374 0.451 0.378 0.378
## 8 Im15 ~ PRODQUAL 85.387 0.649 0.463 0.388 0.388
## 9 Im15 ~ AFCOM 76.869 0.727 0.811 0.681 0.681
## 10 Im15 ~ DECO 69.835 0.321 0.400 0.336 0.336
## 11 Im15 ~ ATMOS 68.865 0.328 0.412 0.346 0.346
## 12 FOOD ~ Im8 65.017 0.219 0.267 0.280 0.267
## 13 FRENCH ~ Im8 60.450 0.269 0.276 0.289 0.276
## 14 AFCOM =~ C_REP1 59.740 0.185 0.207 0.284 0.284
## 15 FRENCH ~ AFCOM 59.527 2.715 3.107 3.107 3.107
## 16 FOOD ~ RI 52.098 2.996 2.140 2.140 2.140
## 17 C_REP2 ~~ C_REP3 50.550 0.105 0.105 1.324 1.324
## 18 FRENCH ~ Im9 49.497 0.188 0.193 0.262 0.193
## 19 CHOICE ~ COI 40.234 -3.741 -4.851 -4.851 -4.851
## 20 CHOICE ~ Im15 39.667 0.240 0.185 0.221 0.185
## 21 Im16 ~~ Im19 34.438 4.282 4.282 9.391 9.391
## 22 SAT ~ RI 34.427 1.296 0.901 0.901 0.901
## 23 SAT ~ AFCOM 34.426 0.240 0.317 0.317 0.317
## 24 AFCOM ~~ SAT 34.426 0.213 0.334 0.334 0.334
## 25 AFCOM ~ SAT 34.426 0.463 0.351 0.351 0.351
## 26 AFCOM ~ RI 34.426 2.423 1.275 1.275 1.275
## 27 AFCOM ~ COI 34.423 -1.282 -1.932 -1.932 -1.932
## 28 Im1 ~~ Im2 34.420 18.676 18.676 114.920 114.920
## 29 SAT ~ COI 34.420 0.446 0.888 0.888 0.888
## 30 Im6 ~~ Im7 34.413 20.484 20.484 86.144 86.144
## 31 Im9 ~ BRAND 31.665 0.245 0.295 0.217 0.217
## 32 FOOD ~ AFCOM 31.388 1.549 2.103 2.103 2.103
## 33 Im9 ~ FRENCH 31.242 0.304 0.296 0.218 0.218
## 34 COM_A1 ~~ COM_A2 29.695 0.282 0.282 0.368 0.368
## 35 Im8 ~ SAT 28.978 0.459 0.388 0.370 0.370
## 36 Im9 ~ PRODQUAL 27.649 0.402 0.287 0.211 0.211
## 37 Im15 ~ COI 26.365 0.636 1.069 0.897 0.897
## 38 Im8 ~ AFCOM 23.181 0.343 0.383 0.365 0.365
## 39 CHOICE ~ SAT 21.757 2.413 1.573 1.573 1.573
## 40 ATMOS =~ C_REP1 21.130 0.092 0.116 0.159 0.159
## 41 BRAND =~ Im13 18.982 0.196 0.235 0.196 0.196
## 42 FRENCH ~ SAT 17.983 1.753 1.520 1.520 1.520
## 43 Im11 ~~ Im13 17.611 -0.175 -0.175 -0.313 -0.313
## 44 PROF ~ Im15 17.562 0.114 0.122 0.146 0.122
## 45 RI =~ SAT_2 16.582 0.270 0.159 0.161 0.161
## 46 Im9 ~ RI 16.466 0.863 0.507 0.373 0.373
## 47 PROF ~ COI 16.252 -1.692 -3.063 -3.063 -3.063
## 48 Im8 ~ PROF 16.089 0.189 0.176 0.167 0.167
## 49 PRODQUAL ~ Im9 15.723 0.078 0.109 0.148 0.109
## 50 AFCOM =~ C_REP2 15.496 -0.080 -0.090 -0.145 -0.145
## 51 CHOICE =~ Im20 14.579 -0.153 -0.199 -0.134 -0.134
## 52 BRAND =~ Im12 14.319 -0.161 -0.194 -0.172 -0.172
## 53 Im21 ~~ Im22 13.959 -0.240 -0.240 -0.397 -0.397
## 54 C_REP1 ~~ C_REP3 13.821 -0.050 -0.050 -0.325 -0.325
## 55 Im9 ~ COI 13.779 0.501 0.842 0.619 0.619
## 56 Im8 ~ RI 13.567 0.619 0.364 0.347 0.347
## 57 RI =~ Im22 13.510 -0.319 -0.188 -0.123 -0.123
## 58 PROF ~ SAT 13.460 1.351 1.229 1.229 1.229
## 59 BRAND ~ RI 13.269 -2.130 -1.040 -1.040 -1.040
## 60 FOOD =~ Im11 12.957 0.218 0.180 0.156 0.156
## 61 COM_A3 ~~ C_REP1 12.934 0.079 0.079 0.197 0.197
## 62 AFCOM =~ C_REP3 12.654 -0.069 -0.077 -0.138 -0.138
## 63 CHOICE =~ Im13 12.494 0.128 0.167 0.138 0.138
## 64 Im9 ~ ATMOS 12.301 0.151 0.190 0.139 0.139
## 65 PRODQUAL ~ COI 12.163 -1.204 -2.843 -2.843 -2.843
## 66 SAT =~ COM_A3 12.153 0.218 0.184 0.116 0.116
## 67 Im21 ~~ C_REP3 11.927 0.055 0.055 0.181 0.181
## 68 AFCOM =~ Im11 11.658 0.139 0.155 0.135 0.135
## 69 SAT =~ C_CR4 11.299 0.268 0.227 0.113 0.113
## 70 Im11 ~~ Im12 11.197 0.133 0.133 0.265 0.265
## 71 BRAND ~ Im9 11.157 0.099 0.082 0.112 0.082
## 72 Im9 ~ AFCOM 11.029 0.300 0.335 0.246 0.246
## 73 AFCOM =~ SAT_2 10.908 0.102 0.114 0.115 0.115
## 74 C_REP1 ~~ C_REP2 10.704 -0.074 -0.074 -0.777 -0.777
## 75 Im8 ~ DECO 10.609 0.108 0.134 0.128 0.128
## 76 Im13 ~~ Im1 10.426 0.068 0.068 0.379 0.379
## 77 ATMOS =~ Im12 10.359 -0.114 -0.143 -0.127 -0.127
## 78 Im8 ~ COI 10.225 -0.341 -0.573 -0.546 -0.546
## 79 CHOICE =~ C_REP1 10.161 0.056 0.073 0.100 0.100
## 80 PRODQUAL ~ Im15 10.071 0.071 0.099 0.118 0.099
This model is not great, it fails the global fit measures.
The highest modification indices are all relating to Im8 and Im15. In order improve the model we do a second round and exclude them.
# excluded out Im8 and Im15
model_SEM <- "
DECO =~ Im3 + Im4 + Im5
FOOD =~ Im10 + Im14
ATMOS =~ Im20 + Im21 + Im22
PRODQUAL =~ Im11 + Im12 + Im13
CHOICE =~ Im1 + Im2
PROF =~ Im16 + Im19
BRAND =~ Im17 + Im18
FRENCH =~ Im6 + Im7
AFCOM =~ COM_A1 + COM_A2 + COM_A3 + COM_A4
SAT =~ SAT_1 + SAT_2 + SAT_3
RI =~ C_REP1 + C_REP2 + C_REP3
COI =~ C_CR1 + C_CR3 + C_CR4
SAT ~ s1*DECO + s2*FOOD + s3*ATMOS + s4*PRODQUAL + s5*CHOICE + s6*PROF + s7*BRAND + s8*FRENCH + si9*Im9
AFCOM ~ a1*DECO + a2*FOOD + a3*ATMOS + a4*PRODQUAL + a5*CHOICE + a6*PROF + a7*BRAND + a8*FRENCH + ai9*Im9
RI ~ rs*SAT + ra*AFCOM + r01*DECO + r02*FOOD + r03*ATMOS + r04*PRODQUAL + r05*CHOICE + r06*PROF + r07*BRAND + r08*FRENCH + r0i9*Im9
COI ~ cs*SAT + ca*AFCOM + c01*DECO + c02*FOOD + c03*ATMOS + c04*PRODQUAL + c05*CHOICE + c06*PROF + c07*BRAND + c08*FRENCH + c0i9*Im9
rss1:= rs*s1
raa1:= ra*a1
css1:= cs*s1
caa1:= ca*a1
DECOtoRI_total:= r01 + rss1 + raa1
DECOtoCOI_total:= c01 + css1 + caa1
rss2:= rs*s2
raa2:= ra*a2
css2:= cs*s2
caa2:= ca*a2
FOODtoRI_total:= r02 + rss2 + raa2
FOODtoCOI_total:= c02 + css2 + caa2
rss3:= rs*s3
raa3:= ra*a3
css3:= cs*s3
caa3:= ca*a3
ATMOStoRI_total:= r03 + rss3 + raa3
ATMOStoCOI_total:= c03 + css3 + caa3
rss4:= rs*s4
raa4:= ra*a4
css4:= cs*s4
caa4:= ca*a4
PQUALtoRI_total:= r04 + rss4 + raa4
PQUALtoCOI_total:= c04 + css4 + caa4
rss5:= rs*s5
raa5:= ra*a5
css5:= cs*s5
caa5:= ca*a5
CHOICEtoRI_total:= r05 + rss5 + raa5
CHOICEtoCOI_total:= c05 + css5 + caa5
rss6:= rs*s6
raa6:= ra*a6
css6:= cs*s6
caa6:= ca*a6
PROFtoRI_total:= r06 + rss6 + raa6
PROFtoCOI_total:= c06 + css6 + caa6
rss7:= rs*s7
raa7:= ra*a7
css7:= cs*s7
caa7:= ca*a7
BRANDtoRI_total:= r07 + rss7 + raa7
BRANDtoCOI_total:= c07 + css7 + caa7
rss8:= rs*s8
raa8:= ra*a8
css8:= cs*s8
caa8:= ca*a8
FRENCHtoRI_total:= r08 + rss8 + raa8
FRENCHtoCOI_total:= c08 + css8 + caa8
rssi9:= rs*si9
raai9:= ra*ai9
cssi9:= cs*si9
caai9:= ca*ai9
Im9toRI_total:= r0i9 + rssi9 + raai9
Im9toCOI_total:= c0i9 + cssi9 + caai9
"fit_SEM <- cfa(model_SEM, data=survey, missing="ML")semPaths(fit_SEM, what = "col", whatLabels = "par", style = "ram",
rotation = 2, layout = "tree3",
mar = c(1, 2, 1, 2), #margins
nCharNodes = 7,
shapeMan = "rectangle", # variable shape
sizeMan = 4, # variable shape size
sizeMan2 = 3, # variable shape vertical stretch
# structural = T, # don't plot image variables (manifests)
sizeInt = 1, # intercept size
intercepts = F, # don't include intercepts
sizeLat = 5, #factor size
asize = 2, # arrow size
curvePivot=T, # edge broken curve
edge.label.cex = .5, # edge label size
# edge.color = "skyblue4",
# levels= c(1,2,7,8,9,10),
groups = "latents",
cut = .5 #cutoff for edges,
)Let us now assess this model
global_fit_measures <- f_global_fit_measures(fit_SEM)
# check global fit pass/fail of global fit measures
global_fit_measures[[1]]| Value | Result | |
|---|---|---|
| pvalue | 0.000 | FAIL |
| chisq | 1018.281 |
|
| cfi | 0.949 | High under-rejection rate |
| rmsea | 0.051 | Acceptable fit |
# output full summary
global_fit_measures[[2]]## lavaan 0.6.15 ended normally after 156 iterations
##
## Estimator ML
## Optimization method NLMINB
## Number of model parameters 165
##
## Used Total
## Number of observations 537 553
## Number of missing patterns 124
##
## Model Test User Model:
##
## Test statistic 1018.281
## Degrees of freedom 427
## P-value (Chi-square) 0.000
##
## Model Test Baseline Model:
##
## Test statistic 12060.146
## Degrees of freedom 528
## P-value 0.000
##
## User Model versus Baseline Model:
##
## Comparative Fit Index (CFI) 0.949
## Tucker-Lewis Index (TLI) 0.937
##
## Robust Comparative Fit Index (CFI) 0.950
## Robust Tucker-Lewis Index (TLI) 0.938
##
## Loglikelihood and Information Criteria:
##
## Loglikelihood user model (H0) -21744.301
## Loglikelihood unrestricted model (H1) -21235.160
##
## Akaike (AIC) 43818.601
## Bayesian (BIC) 44525.791
## Sample-size adjusted Bayesian (SABIC) 44002.025
##
## Root Mean Square Error of Approximation:
##
## RMSEA 0.051
## 90 Percent confidence interval - lower 0.047
## 90 Percent confidence interval - upper 0.055
## P-value H_0: RMSEA <= 0.050 0.368
## P-value H_0: RMSEA >= 0.080 0.000
##
## Robust RMSEA 0.051
## 90 Percent confidence interval - lower 0.047
## 90 Percent confidence interval - upper 0.055
## P-value H_0: Robust RMSEA <= 0.050 0.298
## P-value H_0: Robust RMSEA >= 0.080 0.000
##
## Standardized Root Mean Square Residual:
##
## SRMR 0.082
##
## Parameter Estimates:
##
## Standard errors Standard
## Information Observed
## Observed information based on Hessian
##
## Latent Variables:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## DECO =~
## Im3 1.000 1.239 0.936
## Im4 1.059 0.025 42.134 0.000 1.312 0.970
## Im5 0.817 0.035 23.460 0.000 1.012 0.759
## FOOD =~
## Im10 1.000 0.817 0.923
## Im14 1.015 0.036 28.306 0.000 0.829 0.953
## ATMOS =~
## Im20 1.000 1.259 0.845
## Im21 0.857 0.041 20.756 0.000 1.079 0.788
## Im22 1.067 0.046 23.084 0.000 1.344 0.879
## PRODQUAL =~
## Im11 1.000 0.713 0.621
## Im12 1.395 0.092 15.196 0.000 0.995 0.875
## Im13 1.453 0.103 14.166 0.000 1.036 0.858
## CHOICE =~
## Im1 1.000 1.299 0.976
## Im2 0.890 0.032 27.726 0.000 1.156 0.901
## PROF =~
## Im16 1.000 0.926 0.768
## Im19 1.042 0.059 17.765 0.000 0.965 0.852
## BRAND =~
## Im17 1.000 1.211 0.968
## Im18 0.995 0.041 24.017 0.000 1.205 0.859
## FRENCH =~
## Im6 1.000 0.979 0.817
## Im7 1.182 0.069 17.234 0.000 1.157 0.953
## AFCOM =~
## COM_A1 1.000 1.131 0.794
## COM_A2 1.179 0.056 21.206 0.000 1.334 0.833
## COM_A3 1.171 0.059 19.798 0.000 1.325 0.818
## COM_A4 1.292 0.063 20.536 0.000 1.462 0.843
## SAT =~
## SAT_1 1.000 0.877 0.862
## SAT_2 0.940 0.050 18.636 0.000 0.824 0.819
## SAT_3 0.823 0.055 14.913 0.000 0.721 0.636
## RI =~
## C_REP1 1.000 0.607 0.816
## C_REP2 0.973 0.044 21.976 0.000 0.591 0.937
## C_REP3 0.707 0.038 18.802 0.000 0.429 0.767
## COI =~
## C_CR1 1.000 1.672 0.850
## C_CR3 1.035 0.051 20.157 0.000 1.730 0.831
## C_CR4 0.960 0.049 19.554 0.000 1.604 0.806
##
## Regressions:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## SAT ~
## DECO (s1) -0.099 0.044 -2.260 0.024 -0.139 -0.139
## FOOD (s2) 0.084 0.065 1.290 0.197 0.078 0.078
## ATMOS (s3) 0.046 0.038 1.194 0.232 0.066 0.066
## PRODQUA (s4) -0.035 0.076 -0.454 0.650 -0.028 -0.028
## CHOICE (s5) 0.126 0.040 3.148 0.002 0.186 0.186
## PROF (s6) 0.451 0.088 5.106 0.000 0.476 0.476
## BRAND (s7) 0.014 0.045 0.317 0.751 0.020 0.020
## FRENCH (s8) 0.095 0.053 1.795 0.073 0.107 0.107
## Im9 (si9) 0.003 0.033 0.104 0.917 0.004 0.005
## AFCOM ~
## DECO (a1) -0.027 0.055 -0.487 0.626 -0.030 -0.030
## FOOD (a2) 0.038 0.084 0.449 0.653 0.027 0.027
## ATMOS (a3) 0.366 0.052 7.026 0.000 0.408 0.408
## PRODQUA (a4) -0.203 0.101 -2.015 0.044 -0.128 -0.128
## CHOICE (a5) 0.098 0.051 1.927 0.054 0.112 0.112
## PROF (a6) 0.167 0.107 1.561 0.118 0.136 0.136
## BRAND (a7) -0.013 0.059 -0.228 0.819 -0.014 -0.014
## FRENCH (a8) 0.197 0.069 2.836 0.005 0.170 0.170
## Im9 (ai9) 0.023 0.043 0.528 0.598 0.020 0.027
## RI ~
## SAT (rs) 0.199 0.045 4.417 0.000 0.287 0.287
## AFCOM (ra) 0.186 0.030 6.169 0.000 0.347 0.347
## DECO (r01) 0.014 0.029 0.474 0.636 0.028 0.028
## FOOD (r02) 0.039 0.043 0.897 0.370 0.052 0.052
## ATMOS (r03) 0.039 0.028 1.375 0.169 0.081 0.081
## PRODQUA (r04) 0.109 0.052 2.100 0.036 0.128 0.128
## CHOICE (r05) -0.020 0.026 -0.781 0.435 -0.043 -0.043
## PROF (r06) -0.028 0.060 -0.471 0.638 -0.043 -0.043
## BRAND (r07) -0.002 0.030 -0.051 0.959 -0.003 -0.003
## FRENCH (r08) -0.013 0.036 -0.368 0.713 -0.021 -0.021
## Im9 (r0i9) -0.043 0.022 -1.954 0.051 -0.071 -0.096
## COI ~
## SAT (cs) -0.372 0.134 -2.781 0.005 -0.195 -0.195
## AFCOM (ca) 0.564 0.092 6.102 0.000 0.382 0.382
## DECO (c01) -0.002 0.092 -0.019 0.985 -0.001 -0.001
## FOOD (c02) -0.073 0.136 -0.542 0.588 -0.036 -0.036
## ATMOS (c03) 0.139 0.089 1.567 0.117 0.105 0.105
## PRODQUA (c04) 0.225 0.163 1.379 0.168 0.096 0.096
## CHOICE (c05) -0.006 0.082 -0.079 0.937 -0.005 -0.005
## PROF (c06) -0.211 0.188 -1.126 0.260 -0.117 -0.117
## BRAND (c07) 0.031 0.094 0.332 0.740 0.023 0.023
## FRENCH (c08) -0.116 0.113 -1.029 0.304 -0.068 -0.068
## Im9 (c0i9) -0.013 0.070 -0.188 0.851 -0.008 -0.011
##
## Covariances:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## DECO ~~
## FOOD 0.420 0.051 8.249 0.000 0.415 0.415
## ATMOS 0.733 0.083 8.833 0.000 0.470 0.470
## PRODQUAL 0.409 0.052 7.888 0.000 0.463 0.463
## CHOICE 0.717 0.080 8.962 0.000 0.445 0.445
## PROF 0.758 0.072 10.475 0.000 0.660 0.660
## BRAND 0.778 0.078 10.013 0.000 0.519 0.519
## FRENCH 0.417 0.064 6.493 0.000 0.344 0.344
## FOOD ~~
## ATMOS 0.300 0.052 5.820 0.000 0.292 0.292
## PRODQUAL 0.265 0.035 7.640 0.000 0.456 0.456
## CHOICE 0.320 0.051 6.325 0.000 0.302 0.302
## PROF 0.376 0.044 8.496 0.000 0.497 0.497
## BRAND 0.321 0.048 6.699 0.000 0.325 0.325
## FRENCH 0.468 0.048 9.849 0.000 0.586 0.586
## ATMOS ~~
## PRODQUAL 0.376 0.054 7.007 0.000 0.419 0.419
## CHOICE 0.724 0.085 8.519 0.000 0.443 0.443
## PROF 0.551 0.069 7.979 0.000 0.472 0.472
## BRAND 0.782 0.082 9.546 0.000 0.513 0.513
## FRENCH 0.416 0.065 6.377 0.000 0.338 0.338
## PRODQUAL ~~
## CHOICE 0.448 0.055 8.167 0.000 0.484 0.484
## PROF 0.352 0.044 7.949 0.000 0.534 0.534
## BRAND 0.489 0.054 8.997 0.000 0.567 0.567
## FRENCH 0.219 0.038 5.691 0.000 0.313 0.313
## CHOICE ~~
## PROF 0.726 0.073 9.963 0.000 0.604 0.604
## BRAND 0.817 0.080 10.194 0.000 0.520 0.520
## FRENCH 0.283 0.061 4.625 0.000 0.222 0.222
## PROF ~~
## BRAND 0.678 0.068 10.016 0.000 0.604 0.604
## FRENCH 0.338 0.052 6.522 0.000 0.373 0.373
## BRAND ~~
## FRENCH 0.388 0.062 6.217 0.000 0.327 0.327
## .RI ~~
## .COI -0.024 0.039 -0.612 0.541 -0.032 -0.032
##
## Intercepts:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## .Im3 4.991 0.057 86.922 0.000 4.991 3.771
## .Im4 4.997 0.059 85.280 0.000 4.997 3.693
## .Im5 5.040 0.058 86.460 0.000 5.040 3.777
## .Im10 6.099 0.038 159.489 0.000 6.099 6.897
## .Im14 6.138 0.038 162.709 0.000 6.138 7.058
## .Im20 4.698 0.065 72.813 0.000 4.698 3.154
## .Im21 5.156 0.059 87.040 0.000 5.156 3.766
## .Im22 4.299 0.066 64.745 0.000 4.299 2.812
## .Im11 5.654 0.050 113.399 0.000 5.654 4.927
## .Im12 5.663 0.049 114.673 0.000 5.663 4.985
## .Im13 5.445 0.052 103.901 0.000 5.445 4.508
## .Im1 4.802 0.058 83.325 0.000 4.802 3.609
## .Im2 4.868 0.056 87.545 0.000 4.868 3.794
## .Im16 5.148 0.053 97.768 0.000 5.148 4.267
## .Im19 5.149 0.049 104.764 0.000 5.149 4.546
## .Im17 5.029 0.054 92.712 0.000 5.029 4.018
## .Im18 4.593 0.061 75.157 0.000 4.593 3.275
## .Im6 5.826 0.052 112.320 0.000 5.826 4.863
## .Im7 5.757 0.053 109.007 0.000 5.757 4.743
## .COM_A1 4.187 0.225 18.588 0.000 4.187 2.938
## .COM_A2 3.767 0.265 14.226 0.000 3.767 2.353
## .COM_A3 3.417 0.263 12.980 0.000 3.417 2.110
## .COM_A4 3.322 0.290 11.463 0.000 3.322 1.915
## .SAT_1 5.333 0.172 31.059 0.000 5.333 5.243
## .SAT_2 5.473 0.162 33.790 0.000 5.473 5.439
## .SAT_3 5.455 0.145 37.503 0.000 5.455 4.811
## .C_REP1 4.477 0.124 36.050 0.000 4.477 6.020
## .C_REP2 4.701 0.120 39.263 0.000 4.701 7.452
## .C_REP3 4.815 0.088 54.644 0.000 4.815 8.605
## .C_CR1 2.705 0.380 7.120 0.000 2.705 1.376
## .C_CR3 3.285 0.394 8.345 0.000 3.285 1.578
## .C_CR4 2.806 0.366 7.674 0.000 2.806 1.410
## DECO 0.000 0.000 0.000
## FOOD 0.000 0.000 0.000
## ATMOS 0.000 0.000 0.000
## PRODQUAL 0.000 0.000 0.000
## CHOICE 0.000 0.000 0.000
## PROF 0.000 0.000 0.000
## BRAND 0.000 0.000 0.000
## FRENCH 0.000 0.000 0.000
## .AFCOM 0.000 0.000 0.000
## .SAT 0.000 0.000 0.000
## .RI 0.000 0.000 0.000
## .COI 0.000 0.000 0.000
##
## Variances:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## .Im3 0.217 0.025 8.701 0.000 0.217 0.124
## .Im4 0.109 0.025 4.420 0.000 0.109 0.060
## .Im5 0.756 0.050 15.054 0.000 0.756 0.425
## .Im10 0.115 0.019 5.928 0.000 0.115 0.147
## .Im14 0.069 0.019 3.623 0.000 0.069 0.092
## .Im20 0.634 0.059 10.726 0.000 0.634 0.286
## .Im21 0.711 0.057 12.554 0.000 0.711 0.379
## .Im22 0.533 0.061 8.716 0.000 0.533 0.228
## .Im11 0.808 0.055 14.629 0.000 0.808 0.614
## .Im12 0.301 0.039 7.819 0.000 0.301 0.234
## .Im13 0.385 0.044 8.756 0.000 0.385 0.264
## .Im1 0.084 0.048 1.763 0.078 0.084 0.047
## .Im2 0.309 0.042 7.350 0.000 0.309 0.188
## .Im16 0.598 0.051 11.728 0.000 0.598 0.411
## .Im19 0.351 0.044 7.935 0.000 0.351 0.274
## .Im17 0.099 0.046 2.157 0.031 0.099 0.063
## .Im18 0.516 0.055 9.318 0.000 0.516 0.262
## .Im6 0.478 0.054 8.776 0.000 0.478 0.333
## .Im7 0.136 0.064 2.111 0.035 0.136 0.092
## .COM_A1 0.752 0.059 12.777 0.000 0.752 0.370
## .COM_A2 0.783 0.067 11.742 0.000 0.783 0.306
## .COM_A3 0.867 0.071 12.251 0.000 0.867 0.331
## .COM_A4 0.871 0.076 11.475 0.000 0.871 0.290
## .SAT_1 0.266 0.034 7.796 0.000 0.266 0.257
## .SAT_2 0.333 0.034 9.818 0.000 0.333 0.329
## .SAT_3 0.765 0.055 14.005 0.000 0.765 0.595
## .C_REP1 0.184 0.016 11.311 0.000 0.184 0.333
## .C_REP2 0.049 0.010 4.688 0.000 0.049 0.122
## .C_REP3 0.129 0.009 13.854 0.000 0.129 0.412
## .C_CR1 1.071 0.115 9.289 0.000 1.071 0.277
## .C_CR3 1.339 0.131 10.233 0.000 1.339 0.309
## .C_CR4 1.388 0.124 11.178 0.000 1.388 0.350
## DECO 1.535 0.109 14.100 0.000 1.000 1.000
## FOOD 0.667 0.051 13.159 0.000 1.000 1.000
## ATMOS 1.585 0.137 11.544 0.000 1.000 1.000
## PRODQUAL 0.508 0.069 7.407 0.000 1.000 1.000
## CHOICE 1.686 0.118 14.251 0.000 1.000 1.000
## PROF 0.857 0.089 9.655 0.000 1.000 1.000
## BRAND 1.467 0.106 13.805 0.000 1.000 1.000
## FRENCH 0.958 0.095 10.111 0.000 1.000 1.000
## .AFCOM 0.864 0.087 9.908 0.000 0.676 0.676
## .SAT 0.448 0.048 9.361 0.000 0.583 0.583
## .RI 0.235 0.022 10.718 0.000 0.637 0.637
## .COI 2.301 0.214 10.764 0.000 0.823 0.823
##
## Defined Parameters:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## rss1 -0.020 0.010 -2.003 0.045 -0.040 -0.040
## raa1 -0.005 0.010 -0.486 0.627 -0.010 -0.010
## css1 0.037 0.021 1.767 0.077 0.027 0.027
## caa1 -0.015 0.031 -0.485 0.628 -0.011 -0.011
## DECOtoRI_total -0.011 0.031 -0.351 0.726 -0.022 -0.022
## DECOtoCOI_totl 0.020 0.094 0.209 0.834 0.015 0.015
## rss2 0.017 0.013 1.241 0.215 0.022 0.022
## raa2 0.007 0.016 0.448 0.654 0.009 0.009
## css2 -0.031 0.027 -1.166 0.244 -0.015 -0.015
## caa2 0.021 0.048 0.449 0.654 0.010 0.010
## FOODtoRI_total 0.062 0.047 1.340 0.180 0.084 0.084
## FOODtoCOI_totl -0.083 0.142 -0.587 0.557 -0.041 -0.041
## rss3 0.009 0.008 1.158 0.247 0.019 0.019
## raa3 0.068 0.014 4.748 0.000 0.142 0.142
## css3 -0.017 0.016 -1.090 0.276 -0.013 -0.013
## caa3 0.207 0.044 4.742 0.000 0.156 0.156
## ATMOStoRI_totl 0.116 0.028 4.105 0.000 0.241 0.241
## ATMOStoCOI_ttl 0.329 0.085 3.845 0.000 0.247 0.247
## rss4 -0.007 0.015 -0.451 0.652 -0.008 -0.008
## raa4 -0.038 0.020 -1.908 0.056 -0.044 -0.044
## css4 0.013 0.029 0.449 0.653 0.006 0.006
## caa4 -0.114 0.060 -1.908 0.056 -0.049 -0.049
## PQUALtoRI_totl 0.064 0.055 1.170 0.242 0.076 0.076
## PQUALtoCOI_ttl 0.123 0.169 0.731 0.464 0.053 0.053
## rss5 0.025 0.010 2.624 0.009 0.054 0.054
## raa5 0.018 0.010 1.843 0.065 0.039 0.039
## css5 -0.047 0.023 -2.075 0.038 -0.036 -0.036
## caa5 0.055 0.030 1.852 0.064 0.043 0.043
## CHOICEtoRI_ttl 0.023 0.028 0.834 0.404 0.049 0.049
## CHOICEtCOI_ttl 0.002 0.085 0.021 0.983 0.001 0.001
## rss6 0.090 0.027 3.307 0.001 0.137 0.137
## raa6 0.031 0.021 1.515 0.130 0.047 0.047
## css6 -0.168 0.068 -2.484 0.013 -0.093 -0.093
## caa6 0.094 0.063 1.501 0.133 0.052 0.052
## PROFtoRI_total 0.092 0.059 1.573 0.116 0.141 0.141
## PROFtoCOI_totl -0.285 0.177 -1.615 0.106 -0.158 -0.158
## rss7 0.003 0.009 0.316 0.752 0.006 0.006
## raa7 -0.002 0.011 -0.228 0.819 -0.005 -0.005
## css7 -0.005 0.017 -0.315 0.753 -0.004 -0.004
## caa7 -0.008 0.033 -0.228 0.820 -0.005 -0.005
## BRANDtoRI_totl -0.001 0.032 -0.036 0.971 -0.002 -0.002
## BRANDtoCOI_ttl 0.018 0.099 0.186 0.853 0.013 0.013
## rss8 0.019 0.011 1.674 0.094 0.031 0.031
## raa8 0.037 0.014 2.591 0.010 0.059 0.059
## css8 -0.036 0.023 -1.516 0.130 -0.021 -0.021
## caa8 0.111 0.043 2.581 0.010 0.065 0.065
## FRENCHtoRI_ttl 0.043 0.038 1.117 0.264 0.069 0.069
## FRENCHtCOI_ttl -0.041 0.116 -0.349 0.727 -0.024 -0.024
## rssi9 0.001 0.007 0.104 0.917 0.001 0.002
## raai9 0.004 0.008 0.526 0.599 0.007 0.009
## cssi9 -0.001 0.012 -0.104 0.918 -0.001 -0.001
## caai9 0.013 0.024 0.526 0.599 0.008 0.010
## Im9toRI_total -0.038 0.024 -1.620 0.105 -0.063 -0.085
## Im9toCOI_total -0.002 0.073 -0.023 0.982 -0.001 -0.001
lambda = inspect(fit_SEM, what="std")$lambda
theta = inspect(fit_SEM, what="std")$theta
psi = inspect(fit_SEM, what="std")$psi# calculate indicator reliabilities (should be larger than 0.4)
indic_rel <- f_indic_rel(lambda, theta)
# pass/fail
indic_rel[[1]]| Result | |
|---|---|
| Individual Item Reliability | Fail |
# details
indic_rel[[2]]## DECO FOOD ATMOS PRODQU CHOICE PROF BRAND FRENCH AFCOM SAT RI
## Im3 0.876 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
## Im4 0.940 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
## Im5 0.575 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
## Im10 NaN 0.853 NaN NaN NaN NaN NaN NaN NaN NaN NaN
## Im14 NaN 0.908 NaN NaN NaN NaN NaN NaN NaN NaN NaN
## Im20 NaN NaN 0.714 NaN NaN NaN NaN NaN NaN NaN NaN
## Im21 NaN NaN 0.621 NaN NaN NaN NaN NaN NaN NaN NaN
## Im22 NaN NaN 0.772 NaN NaN NaN NaN NaN NaN NaN NaN
## Im11 NaN NaN NaN 0.386 NaN NaN NaN NaN NaN NaN NaN
## Im12 NaN NaN NaN 0.766 NaN NaN NaN NaN NaN NaN NaN
## Im13 NaN NaN NaN 0.736 NaN NaN NaN NaN NaN NaN NaN
## Im1 NaN NaN NaN NaN 0.953 NaN NaN NaN NaN NaN NaN
## Im2 NaN NaN NaN NaN 0.812 NaN NaN NaN NaN NaN NaN
## Im16 NaN NaN NaN NaN NaN 0.589 NaN NaN NaN NaN NaN
## Im19 NaN NaN NaN NaN NaN 0.726 NaN NaN NaN NaN NaN
## Im17 NaN NaN NaN NaN NaN NaN 0.937 NaN NaN NaN NaN
## Im18 NaN NaN NaN NaN NaN NaN 0.738 NaN NaN NaN NaN
## Im6 NaN NaN NaN NaN NaN NaN NaN 0.667 NaN NaN NaN
## Im7 NaN NaN NaN NaN NaN NaN NaN 0.908 NaN NaN NaN
## COM_A1 NaN NaN NaN NaN NaN NaN NaN NaN 0.630 NaN NaN
## COM_A2 NaN NaN NaN NaN NaN NaN NaN NaN 0.694 NaN NaN
## COM_A3 NaN NaN NaN NaN NaN NaN NaN NaN 0.669 NaN NaN
## COM_A4 NaN NaN NaN NaN NaN NaN NaN NaN 0.710 NaN NaN
## SAT_1 NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.743 NaN
## SAT_2 NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.671 NaN
## SAT_3 NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.405 NaN
## C_REP1 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.667
## C_REP2 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.878
## C_REP3 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.588
## C_CR1 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
## C_CR3 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
## C_CR4 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
## Im9 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
## COI Im9
## Im3 NaN NaN
## Im4 NaN NaN
## Im5 NaN NaN
## Im10 NaN NaN
## Im14 NaN NaN
## Im20 NaN NaN
## Im21 NaN NaN
## Im22 NaN NaN
## Im11 NaN NaN
## Im12 NaN NaN
## Im13 NaN NaN
## Im1 NaN NaN
## Im2 NaN NaN
## Im16 NaN NaN
## Im19 NaN NaN
## Im17 NaN NaN
## Im18 NaN NaN
## Im6 NaN NaN
## Im7 NaN NaN
## COM_A1 NaN NaN
## COM_A2 NaN NaN
## COM_A3 NaN NaN
## COM_A4 NaN NaN
## SAT_1 NaN NaN
## SAT_2 NaN NaN
## SAT_3 NaN NaN
## C_REP1 NaN NaN
## C_REP2 NaN NaN
## C_REP3 NaN NaN
## C_CR1 0.723 NaN
## C_CR3 0.691 NaN
## C_CR4 0.650 NaN
## Im9 NaN 1
# calculate construct reliability (should be above .6)
construct_rel <- f_construct_rel(lambda,theta)
# pass/fail
construct_rel[[1]]| Result | |
|---|---|
| Construct Reliability | Pass |
# details
construct_rel[[2]]## DECO FOOD ATMOS PRODQUAL CHOICE PROF BRAND
## DECO 0.9211495 NaN NaN NaN NaN NaN NaN
## FOOD NaN 0.9363902 NaN NaN NaN NaN NaN
## ATMOS NaN NaN 0.8760786 NaN NaN NaN NaN
## PRODQUAL NaN NaN NaN 0.8330218 NaN NaN NaN
## CHOICE NaN NaN NaN NaN 0.9374431 NaN NaN
## PROF NaN NaN NaN NaN NaN 0.7929737 NaN
## BRAND NaN NaN NaN NaN NaN NaN 0.9111648
## FRENCH NaN NaN NaN NaN NaN NaN NaN
## AFCOM NaN NaN NaN NaN NaN NaN NaN
## SAT NaN NaN NaN NaN NaN NaN NaN
## RI NaN NaN NaN NaN NaN NaN NaN
## COI NaN NaN NaN NaN NaN NaN NaN
## Im9 NaN NaN NaN NaN NaN NaN NaN
## FRENCH AFCOM SAT RI COI Im9
## DECO NaN NaN NaN NaN NaN NaN
## FOOD NaN NaN NaN NaN NaN NaN
## ATMOS NaN NaN NaN NaN NaN NaN
## PRODQUAL NaN NaN NaN NaN NaN NaN
## CHOICE NaN NaN NaN NaN NaN NaN
## PROF NaN NaN NaN NaN NaN NaN
## BRAND NaN NaN NaN NaN NaN NaN
## FRENCH 0.880507 NaN NaN NaN NaN NaN
## AFCOM NaN 0.8929799 NaN NaN NaN NaN
## SAT NaN NaN 0.819632 NaN NaN NaN
## RI NaN NaN NaN 0.8797294 NaN NaN
## COI NaN NaN NaN NaN 0.8685042 NaN
## Im9 NaN NaN NaN NaN NaN 1
# calculate Average Variance Extracted (should be above .5)
AVE <- f_AVE(lambda,theta)
# pass/fail
AVE[[1]]| Result | |
|---|---|
| Average Variance Extracted | Pass |
# details
diag(AVE[[2]])## DECO FOOD ATMOS PRODQUAL CHOICE PROF BRAND FRENCH
## 0.7974248 0.8804152 0.7024908 0.6295153 0.8824164 0.6575775 0.8373090 0.7875128
## AFCOM SAT RI COI Im9
## 0.6760688 0.6061532 0.7106341 0.6877590 1.0000000
# correlations between constructs (factors...) should be lower than .7
construct_cor <- f_construct_corr(psi)
# pass / fail
construct_cor[[1]]| Result | |
|---|---|
| Construct Correlations | Pass |
# details
construct_cor[[2]]## DECO FOOD ATMOS PRODQU CHOICE PROF BRAND FRENCH AFCOM SAT
## DECO 1.000
## FOOD 0.415 1.000
## ATMOS 0.470 0.292 1.000
## PRODQUAL 0.463 0.456 0.419 1.000
## CHOICE 0.445 0.302 0.443 0.484 1.000
## PROF 0.660 0.497 0.472 0.534 0.604 1.000
## BRAND 0.519 0.325 0.513 0.567 0.520 0.604 1.000
## FRENCH 0.344 0.586 0.338 0.313 0.222 0.373 0.327 1.000
## AFCOM 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.676
## SAT 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.583
## RI 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000
## COI 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000
## Im9 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000
## RI COI Im9
## DECO
## FOOD
## ATMOS
## PRODQUAL
## CHOICE
## PROF
## BRAND
## FRENCH
## AFCOM
## SAT
## RI 0.637
## COI -0.032 0.823
## Im9 0.000 0.000 1.000
# AVE should be higher than squared correlations between constructs
fornell_larcker <- f_fornell_larcker(psi,AVE[[2]])
# pass / fail
fornell_larcker[[1]]| Result | |
|---|---|
| Fornell-Larcker Criteria | Pass |
# details (note: AVE is in the diagonals)
fornell_larcker[[2]]## DECO FOOD ATMOS PRODQU CHOICE PROF BRAND FRENCH AFCOM SAT RI
## DECO 0.797
## FOOD 0.173 0.880
## ATMOS 0.221 0.085 0.702
## PRODQUAL 0.214 0.208 0.176 0.630
## CHOICE 0.198 0.091 0.196 0.234 0.882
## PROF 0.436 0.247 0.223 0.285 0.365 0.658
## BRAND 0.269 0.106 0.263 0.321 0.270 0.365 0.837
## FRENCH 0.118 0.344 0.114 0.098 0.049 0.139 0.107 0.788
## AFCOM 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.676
## SAT 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.606
## RI 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.711
## COI 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.001
## Im9 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000
## COI Im9
## DECO
## FOOD
## ATMOS
## PRODQUAL
## CHOICE
## PROF
## BRAND
## FRENCH
## AFCOM
## SAT
## RI
## COI 0.688
## Im9 0.000 1.000
arrange(modificationindices(fit_SEM),-mi) |> filter(mi>10)## lhs op rhs mi epc sepc.lv sepc.all sepc.nox
## 1 Im9 ~ FRENCH 155.550 0.777 0.761 0.562 0.562
## 2 Im9 ~ RI 151.552 2.559 1.554 1.149 1.149
## 3 Im9 ~ PRODQUAL 124.611 0.976 0.696 0.515 0.515
## 4 Im9 ~ SAT 122.499 1.200 1.052 0.778 0.778
## 5 Im9 ~ AFCOM 111.438 1.000 1.132 0.837 0.837
## 6 Im9 ~ BRAND 111.082 0.523 0.634 0.469 0.469
## 7 Im9 ~ FOOD 100.053 0.738 0.603 0.446 0.446
## 8 Im9 ~ PROF 91.639 0.656 0.608 0.449 0.449
## 9 Im9 ~ ATMOS 69.669 0.411 0.517 0.383 0.383
## 10 Im9 ~ DECO 67.885 0.397 0.492 0.364 0.364
## 11 AFCOM =~ C_REP1 60.470 0.185 0.210 0.282 0.282
## 12 C_REP2 ~~ C_REP3 49.725 0.097 0.097 1.219 1.219
## 13 FRENCH ~ SAT 48.923 55.264 49.510 49.510 49.510
## 14 Im9 ~ CHOICE 48.906 0.321 0.417 0.309 0.309
## 15 FRENCH ~ Im9 48.873 0.187 0.191 0.259 0.191
## 16 FRENCH ~ AFCOM 48.871 8.308 9.605 9.605 9.605
## 17 FRENCH ~ RI 48.871 -4.885 -3.031 -3.031 -3.031
## 18 FRENCH ~ COI 48.776 -113.798 -194.411 -194.411 -194.411
## 19 Im10 ~~ Im14 35.314 67.595 67.595 755.626 755.626
## 20 Im6 ~~ Im7 35.139 13.285 13.285 52.196 52.196
## 21 AFCOM ~ COI 35.135 -1.264 -1.868 -1.868 -1.868
## 22 SAT ~ RI 35.132 1.309 0.906 0.906 0.906
## 23 SAT ~ AFCOM 35.131 0.244 0.315 0.315 0.315
## 24 AFCOM ~ SAT 35.131 0.471 0.365 0.365 0.365
## 25 AFCOM ~~ SAT 35.131 0.211 0.339 0.339 0.339
## 26 SAT ~ COI 35.131 0.433 0.825 0.825 0.825
## 27 AFCOM ~ RI 35.131 2.364 1.269 1.269 1.269
## 28 Im16 ~~ Im19 35.116 2.922 2.922 6.374 6.374
## 29 Im1 ~~ Im2 35.103 15.287 15.287 94.890 94.890
## 30 COM_A1 ~~ COM_A2 27.866 0.268 0.268 0.350 0.350
## 31 ATMOS =~ C_REP1 22.764 0.096 0.121 0.162 0.162
## 32 BRAND =~ Im13 20.077 0.199 0.241 0.199 0.199
## 33 Im11 ~~ Im13 18.598 -0.177 -0.177 -0.316 -0.316
## 34 PRODQUAL ~ COI 16.973 -48.607 -113.952 -113.952 -113.952
## 35 RI =~ SAT_2 16.370 0.267 0.162 0.161 0.161
## 36 PRODQUAL ~ RI 16.249 -2.040 -1.737 -1.737 -1.737
## 37 PRODQUAL ~ Im9 16.248 0.078 0.110 0.148 0.110
## 38 PRODQUAL ~ AFCOM 16.240 3.468 5.501 5.501 5.501
## 39 PRODQUAL ~ SAT 16.218 23.039 28.324 28.324 28.324
## 40 AFCOM =~ C_REP2 15.140 -0.079 -0.089 -0.141 -0.141
## 41 BRAND =~ Im12 14.648 -0.162 -0.196 -0.173 -0.173
## 42 AFCOM =~ C_REP3 14.165 -0.072 -0.081 -0.145 -0.145
## 43 C_REP1 ~~ C_REP3 13.943 -0.048 -0.048 -0.310 -0.310
## 44 FOOD =~ Im11 13.433 0.222 0.181 0.158 0.158
## 45 COM_A3 ~~ C_REP1 12.779 0.078 0.078 0.194 0.194
## 46 CHOICE =~ Im20 12.617 -0.140 -0.182 -0.122 -0.122
## 47 RI =~ Im22 12.320 -0.299 -0.182 -0.119 -0.119
## 48 Im11 ~~ Im12 11.991 0.136 0.136 0.275 0.275
## 49 Im21 ~~ Im22 11.850 -0.223 -0.223 -0.363 -0.363
## 50 SAT =~ COM_A3 11.707 0.208 0.182 0.112 0.112
## 51 CHOICE =~ Im13 11.668 0.123 0.160 0.132 0.132
## 52 AFCOM =~ Im11 11.457 0.134 0.152 0.132 0.132
## 53 Im21 ~~ C_REP3 11.324 0.053 0.053 0.175 0.175
## 54 C_REP1 ~~ C_REP2 10.718 -0.070 -0.070 -0.743 -0.743
## 55 CHOICE =~ C_REP1 10.628 0.057 0.075 0.100 0.100
## 56 Im9 ~ COI 10.608 0.536 0.897 0.663 0.663
## 57 BRAND ~ AFCOM 10.585 4.266 3.984 3.984 3.984
## 58 BRAND ~ Im9 10.584 0.096 0.079 0.107 0.079
## 59 BRAND ~ RI 10.584 -2.508 -1.257 -1.257 -1.257
## 60 BRAND ~ SAT 10.579 28.349 20.518 20.518 20.518
## 61 ATMOS =~ Im12 10.476 -0.111 -0.140 -0.123 -0.123
## 62 PRODQUAL =~ C_CR4 10.300 0.292 0.208 0.105 0.105
## 63 Im13 ~~ Im1 10.185 0.066 0.066 0.367 0.367
## 64 ATMOS =~ C_REP3 10.156 -0.052 -0.065 -0.116 -0.116
We have improved on the global fit measures, but the model is still not satisfactory.
Looking at the modification indices we find that Im9 is now the most problematic, we decide to perform another round excluding Im9.
# Im8, Im9, Im15 are excluded
model_SEM <- "
DECO =~ Im3 + Im4 + Im5
FOOD =~ Im10 + Im14
ATMOS =~ Im20 + Im21 + Im22
PRODQUAL =~ Im11 + Im12 + Im13
CHOICE =~ Im1 + Im2
PROF =~ Im16 + Im19
BRAND =~ Im17 + Im18
FRENCH =~ Im6 + Im7
AFCOM =~ COM_A1 + COM_A2 + COM_A3 + COM_A4
SAT =~ SAT_1 + SAT_2 + SAT_3
RI =~ C_REP1 + C_REP2 + C_REP3
COI =~ C_CR1 + C_CR3 + C_CR4
SAT ~ s1*DECO + s2*FOOD + s3*ATMOS + s4*PRODQUAL + s5*CHOICE + s6*PROF + s7*BRAND + s8*FRENCH
AFCOM ~ a1*DECO + a2*FOOD + a3*ATMOS + a4*PRODQUAL + a5*CHOICE + a6*PROF + a7*BRAND + a8*FRENCH
RI ~ rs*SAT + ra*AFCOM + r01*DECO + r02*FOOD + r03*ATMOS + r04*PRODQUAL + r05*CHOICE + r06*PROF + r07*BRAND + r08*FRENCH
COI ~ cs*SAT + ca*AFCOM + c01*DECO + c02*FOOD + c03*ATMOS + c04*PRODQUAL + c05*CHOICE + c06*PROF + c07*BRAND + c08*FRENCH
rss1:= rs*s1
raa1:= ra*a1
css1:= cs*s1
caa1:= ca*a1
DECOtoRI_total:= r01 + rss1 + raa1
DECOtoCOI_total:= c01 + css1 + caa1
rss2:= rs*s2
raa2:= ra*a2
css2:= cs*s2
caa2:= ca*a2
FOODtoRI_total:= r02 + rss2 + raa2
FOODtoCOI_total:= c02 + css2 + caa2
rss3:= rs*s3
raa3:= ra*a3
css3:= cs*s3
caa3:= ca*a3
ATMOStoRI_total:= r03 + rss3 + raa3
ATMOStoCOI_total:= c03 + css3 + caa3
rss4:= rs*s4
raa4:= ra*a4
css4:= cs*s4
caa4:= ca*a4
PQUALtoRI_total:= r04 + rss4 + raa4
PQUALtoCOI_total:= c04 + css4 + caa4
rss5:= rs*s5
raa5:= ra*a5
css5:= cs*s5
caa5:= ca*a5
CHOICEtoRI_total:= r05 + rss5 + raa5
CHOICEtoCOI_total:= c05 + css5 + caa5
rss6:= rs*s6
raa6:= ra*a6
css6:= cs*s6
caa6:= ca*a6
PROFtoRI_total:= r06 + rss6 + raa6
PROFtoCOI_total:= c06 + css6 + caa6
rss7:= rs*s7
raa7:= ra*a7
css7:= cs*s7
caa7:= ca*a7
BRANDtoRI_total:= r07 + rss7 + raa7
BRANDtoCOI_total:= c07 + css7 + caa7
rss8:= rs*s8
raa8:= ra*a8
css8:= cs*s8
caa8:= ca*a8
FRENCHtoRI_total:= r08 + rss8 + raa8
FRENCHtoCOI_total:= c08 + css8 + caa8
"fit_SEM <- cfa(model_SEM, data=survey, missing="ML")semPaths(fit_SEM, what = "col", whatLabels = "par", style = "ram",
rotation = 2, layout = "tree3",
mar = c(1, 2, 1, 2), #margins
nCharNodes = 7,
shapeMan = "rectangle", # variable shape
sizeMan = 4, # variable shape size
sizeMan2 = 3, # variable shape vertical stretch
# structural = T, # don't plot image variables (manifests)
sizeInt = 1, # intercept size
intercepts = F, # don't include intercepts
sizeLat = 5, #factor size
asize = 2, # arrow size
curvePivot=T, # edge broken curve
edge.label.cex = .5, # edge label size
# edge.color = "skyblue4",
# levels= c(1,2,7,8,9,10),
groups = "latents",
cut = .5 #cutoff for edges,
)Let us now assess this model
global_fit_measures <- f_global_fit_measures(fit_SEM)
# check global fit pass/fail of global fit measures
global_fit_measures[[1]]| Value | Result | |
|---|---|---|
| pvalue | 0.000 | FAIL |
| chisq | 700.455 |
|
| cfi | 0.974 | Accept model |
| rmsea | 0.037 | Good fit |
# output full summary
global_fit_measures[[2]]## lavaan 0.6.15 ended normally after 150 iterations
##
## Estimator ML
## Optimization method NLMINB
## Number of model parameters 161
##
## Number of observations 553
## Number of missing patterns 135
##
## Model Test User Model:
##
## Test statistic 700.455
## Degrees of freedom 399
## P-value (Chi-square) 0.000
##
## Model Test Baseline Model:
##
## Test statistic 11978.557
## Degrees of freedom 496
## P-value 0.000
##
## User Model versus Baseline Model:
##
## Comparative Fit Index (CFI) 0.974
## Tucker-Lewis Index (TLI) 0.967
##
## Robust Comparative Fit Index (CFI) 0.974
## Robust Tucker-Lewis Index (TLI) 0.968
##
## Loglikelihood and Information Criteria:
##
## Loglikelihood user model (H0) -22368.900
## Loglikelihood unrestricted model (H1) -22018.673
##
## Akaike (AIC) 45059.800
## Bayesian (BIC) 45754.573
## Sample-size adjusted Bayesian (SABIC) 45243.488
##
## Root Mean Square Error of Approximation:
##
## RMSEA 0.037
## 90 Percent confidence interval - lower 0.032
## 90 Percent confidence interval - upper 0.041
## P-value H_0: RMSEA <= 0.050 1.000
## P-value H_0: RMSEA >= 0.080 0.000
##
## Robust RMSEA 0.038
## 90 Percent confidence interval - lower 0.033
## 90 Percent confidence interval - upper 0.042
## P-value H_0: Robust RMSEA <= 0.050 1.000
## P-value H_0: Robust RMSEA >= 0.080 0.000
##
## Standardized Root Mean Square Residual:
##
## SRMR 0.041
##
## Parameter Estimates:
##
## Standard errors Standard
## Information Observed
## Observed information based on Hessian
##
## Latent Variables:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## DECO =~
## Im3 1.000 1.235 0.936
## Im4 1.057 0.025 42.732 0.000 1.306 0.970
## Im5 0.818 0.034 23.806 0.000 1.011 0.760
## FOOD =~
## Im10 1.000 0.810 0.921
## Im14 1.021 0.036 28.645 0.000 0.827 0.955
## ATMOS =~
## Im20 1.000 1.262 0.844
## Im21 0.857 0.041 20.999 0.000 1.081 0.789
## Im22 1.056 0.046 23.033 0.000 1.333 0.873
## PRODQUAL =~
## Im11 1.000 0.701 0.613
## Im12 1.414 0.094 15.006 0.000 0.991 0.872
## Im13 1.468 0.105 13.929 0.000 1.029 0.855
## CHOICE =~
## Im1 1.000 1.297 0.974
## Im2 0.896 0.032 28.322 0.000 1.162 0.904
## PROF =~
## Im16 1.000 0.919 0.764
## Im19 1.043 0.058 17.862 0.000 0.959 0.853
## BRAND =~
## Im17 1.000 1.205 0.970
## Im18 0.992 0.041 24.108 0.000 1.196 0.855
## FRENCH =~
## Im6 1.000 0.987 0.822
## Im7 1.158 0.065 17.797 0.000 1.143 0.944
## AFCOM =~
## COM_A1 1.000 1.144 0.796
## COM_A2 1.174 0.055 21.497 0.000 1.342 0.836
## COM_A3 1.162 0.058 20.027 0.000 1.329 0.817
## COM_A4 1.278 0.061 20.801 0.000 1.462 0.842
## SAT =~
## SAT_1 1.000 0.882 0.865
## SAT_2 0.933 0.049 18.915 0.000 0.823 0.819
## SAT_3 0.809 0.055 14.800 0.000 0.714 0.624
## RI =~
## C_REP1 1.000 0.596 0.816
## C_REP2 0.971 0.043 22.489 0.000 0.579 0.931
## C_REP3 0.702 0.037 19.037 0.000 0.419 0.756
## COI =~
## C_CR1 1.000 1.658 0.851
## C_CR3 1.033 0.051 20.244 0.000 1.712 0.826
## C_CR4 0.963 0.049 19.765 0.000 1.597 0.806
##
## Regressions:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## SAT ~
## DECO (s1) -0.109 0.043 -2.529 0.011 -0.152 -0.152
## FOOD (s2) 0.081 0.065 1.238 0.216 0.074 0.074
## ATMOS (s3) 0.052 0.038 1.371 0.170 0.074 0.074
## PRODQUAL (s4) -0.038 0.075 -0.506 0.613 -0.030 -0.030
## CHOICE (s5) 0.134 0.040 3.388 0.001 0.197 0.197
## PROF (s6) 0.459 0.087 5.249 0.000 0.479 0.479
## BRAND (s7) 0.008 0.045 0.178 0.859 0.011 0.011
## FRENCH (s8) 0.103 0.049 2.093 0.036 0.115 0.115
## AFCOM ~
## DECO (a1) -0.024 0.054 -0.441 0.659 -0.026 -0.026
## FOOD (a2) 0.028 0.084 0.331 0.741 0.020 0.020
## ATMOS (a3) 0.373 0.052 7.200 0.000 0.411 0.411
## PRODQUAL (a4) -0.187 0.099 -1.899 0.058 -0.115 -0.115
## CHOICE (a5) 0.101 0.050 2.016 0.044 0.114 0.114
## PROF (a6) 0.160 0.105 1.519 0.129 0.129 0.129
## BRAND (a7) -0.018 0.058 -0.305 0.761 -0.019 -0.019
## FRENCH (a8) 0.223 0.064 3.483 0.000 0.192 0.192
## RI ~
## SAT (rs) 0.215 0.045 4.776 0.000 0.318 0.318
## AFCOM (ra) 0.184 0.030 6.145 0.000 0.354 0.354
## DECO (r01) 0.010 0.029 0.333 0.739 0.020 0.020
## FOOD (r02) 0.038 0.043 0.867 0.386 0.051 0.051
## ATMOS (r03) 0.040 0.028 1.428 0.153 0.085 0.085
## PRODQUAL (r04) 0.077 0.051 1.504 0.133 0.091 0.091
## CHOICE (r05) -0.017 0.026 -0.652 0.515 -0.037 -0.037
## PROF (r06) -0.037 0.060 -0.608 0.543 -0.056 -0.056
## BRAND (r07) -0.011 0.030 -0.363 0.717 -0.022 -0.022
## FRENCH (r08) -0.034 0.033 -1.010 0.312 -0.056 -0.056
## COI ~
## SAT (cs) -0.357 0.131 -2.719 0.007 -0.190 -0.190
## AFCOM (ca) 0.546 0.091 6.015 0.000 0.377 0.377
## DECO (c01) -0.031 0.090 -0.346 0.729 -0.023 -0.023
## FOOD (c02) -0.080 0.134 -0.592 0.554 -0.039 -0.039
## ATMOS (c03) 0.152 0.087 1.739 0.082 0.116 0.116
## PRODQUAL (c04) 0.197 0.159 1.237 0.216 0.083 0.083
## CHOICE (c05) -0.006 0.080 -0.077 0.939 -0.005 -0.005
## PROF (c06) -0.176 0.184 -0.957 0.338 -0.098 -0.098
## BRAND (c07) 0.022 0.092 0.241 0.809 0.016 0.016
## FRENCH (c08) -0.127 0.104 -1.220 0.223 -0.075 -0.075
##
## Covariances:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## DECO ~~
## FOOD 0.417 0.050 8.386 0.000 0.417 0.417
## ATMOS 0.728 0.082 8.916 0.000 0.467 0.467
## PRODQUAL 0.407 0.051 8.024 0.000 0.470 0.470
## CHOICE 0.708 0.079 9.017 0.000 0.442 0.442
## PROF 0.744 0.070 10.551 0.000 0.655 0.655
## BRAND 0.769 0.076 10.128 0.000 0.516 0.516
## FRENCH 0.413 0.063 6.533 0.000 0.339 0.339
## FOOD ~~
## ATMOS 0.301 0.051 5.948 0.000 0.295 0.295
## PRODQUAL 0.256 0.034 7.643 0.000 0.452 0.452
## CHOICE 0.327 0.050 6.610 0.000 0.312 0.312
## PROF 0.371 0.043 8.626 0.000 0.499 0.499
## BRAND 0.317 0.047 6.796 0.000 0.325 0.325
## FRENCH 0.469 0.047 10.033 0.000 0.587 0.587
## ATMOS ~~
## PRODQUAL 0.370 0.053 7.014 0.000 0.418 0.418
## CHOICE 0.732 0.084 8.676 0.000 0.447 0.447
## PROF 0.552 0.068 8.106 0.000 0.476 0.476
## BRAND 0.785 0.081 9.709 0.000 0.516 0.516
## FRENCH 0.415 0.065 6.397 0.000 0.333 0.333
## PRODQUAL ~~
## CHOICE 0.433 0.053 8.113 0.000 0.477 0.477
## PROF 0.342 0.043 7.966 0.000 0.531 0.531
## BRAND 0.477 0.053 9.030 0.000 0.565 0.565
## FRENCH 0.211 0.038 5.616 0.000 0.305 0.305
## CHOICE ~~
## PROF 0.717 0.071 10.049 0.000 0.602 0.602
## BRAND 0.814 0.079 10.355 0.000 0.521 0.521
## FRENCH 0.292 0.061 4.789 0.000 0.228 0.228
## PROF ~~
## BRAND 0.667 0.066 10.107 0.000 0.602 0.602
## FRENCH 0.336 0.051 6.571 0.000 0.370 0.370
## BRAND ~~
## FRENCH 0.389 0.061 6.349 0.000 0.327 0.327
## .RI ~~
## .COI -0.015 0.038 -0.386 0.699 -0.020 -0.020
##
## Intercepts:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## .Im3 4.995 0.056 88.568 0.000 4.995 3.786
## .Im4 4.999 0.057 86.997 0.000 4.999 3.712
## .Im5 5.036 0.057 87.850 0.000 5.036 3.787
## .Im10 6.100 0.037 162.780 0.000 6.100 6.936
## .Im14 6.138 0.037 165.854 0.000 6.138 7.093
## .Im20 4.672 0.064 73.218 0.000 4.672 3.125
## .Im21 5.139 0.058 87.977 0.000 5.139 3.750
## .Im22 4.280 0.065 65.480 0.000 4.280 2.802
## .Im11 5.653 0.049 115.299 0.000 5.653 4.944
## .Im12 5.665 0.049 116.160 0.000 5.665 4.986
## .Im13 5.448 0.052 105.690 0.000 5.448 4.527
## .Im1 4.792 0.057 84.292 0.000 4.792 3.600
## .Im2 4.858 0.055 88.417 0.000 4.858 3.781
## .Im16 5.135 0.052 99.193 0.000 5.135 4.270
## .Im19 5.145 0.048 107.021 0.000 5.145 4.576
## .Im17 5.025 0.053 94.554 0.000 5.025 4.042
## .Im18 4.595 0.060 76.460 0.000 4.595 3.287
## .Im6 5.828 0.051 113.798 0.000 5.828 4.858
## .Im7 5.754 0.052 110.817 0.000 5.754 4.756
## .COM_A1 4.287 0.061 69.746 0.000 4.287 2.983
## .COM_A2 3.887 0.069 56.667 0.000 3.887 2.420
## .COM_A3 3.543 0.070 50.856 0.000 3.543 2.178
## .COM_A4 3.456 0.074 46.672 0.000 3.456 1.991
## .SAT_1 5.343 0.043 122.952 0.000 5.343 5.239
## .SAT_2 5.482 0.043 127.741 0.000 5.482 5.455
## .SAT_3 5.458 0.050 109.429 0.000 5.458 4.774
## .C_REP1 4.283 0.031 137.513 0.000 4.283 5.859
## .C_REP2 4.507 0.027 169.647 0.000 4.507 7.250
## .C_REP3 4.677 0.024 196.938 0.000 4.677 8.445
## .C_CR1 2.679 0.084 32.074 0.000 2.679 1.375
## .C_CR3 3.261 0.088 36.878 0.000 3.261 1.572
## .C_CR4 2.786 0.085 32.900 0.000 2.786 1.405
## DECO 0.000 0.000 0.000
## FOOD 0.000 0.000 0.000
## ATMOS 0.000 0.000 0.000
## PRODQUAL 0.000 0.000 0.000
## CHOICE 0.000 0.000 0.000
## PROF 0.000 0.000 0.000
## BRAND 0.000 0.000 0.000
## FRENCH 0.000 0.000 0.000
## .AFCOM 0.000 0.000 0.000
## .SAT 0.000 0.000 0.000
## .RI 0.000 0.000 0.000
## .COI 0.000 0.000 0.000
##
## Variances:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## .Im3 0.214 0.024 8.793 0.000 0.214 0.123
## .Im4 0.108 0.024 4.490 0.000 0.108 0.060
## .Im5 0.747 0.049 15.219 0.000 0.747 0.422
## .Im10 0.118 0.019 6.214 0.000 0.118 0.153
## .Im14 0.066 0.019 3.503 0.000 0.066 0.088
## .Im20 0.644 0.059 10.844 0.000 0.644 0.288
## .Im21 0.708 0.056 12.627 0.000 0.708 0.377
## .Im22 0.557 0.061 9.079 0.000 0.557 0.239
## .Im11 0.817 0.055 14.814 0.000 0.817 0.625
## .Im12 0.309 0.040 7.819 0.000 0.309 0.240
## .Im13 0.389 0.045 8.748 0.000 0.389 0.269
## .Im1 0.090 0.047 1.934 0.053 0.090 0.051
## .Im2 0.302 0.041 7.299 0.000 0.302 0.183
## .Im16 0.602 0.050 11.936 0.000 0.602 0.416
## .Im19 0.345 0.044 7.931 0.000 0.345 0.273
## .Im17 0.092 0.045 2.041 0.041 0.092 0.060
## .Im18 0.524 0.055 9.575 0.000 0.524 0.268
## .Im6 0.466 0.053 8.770 0.000 0.466 0.324
## .Im7 0.158 0.061 2.610 0.009 0.158 0.108
## .COM_A1 0.757 0.058 12.955 0.000 0.757 0.366
## .COM_A2 0.779 0.065 11.912 0.000 0.779 0.302
## .COM_A3 0.880 0.070 12.501 0.000 0.880 0.333
## .COM_A4 0.875 0.075 11.711 0.000 0.875 0.290
## .SAT_1 0.262 0.034 7.744 0.000 0.262 0.252
## .SAT_2 0.332 0.033 9.961 0.000 0.332 0.329
## .SAT_3 0.798 0.056 14.347 0.000 0.798 0.610
## .C_REP1 0.179 0.016 11.294 0.000 0.179 0.334
## .C_REP2 0.051 0.010 4.951 0.000 0.051 0.133
## .C_REP3 0.131 0.009 14.059 0.000 0.131 0.428
## .C_CR1 1.047 0.113 9.302 0.000 1.047 0.276
## .C_CR3 1.369 0.130 10.569 0.000 1.369 0.318
## .C_CR4 1.378 0.122 11.300 0.000 1.378 0.351
## DECO 1.526 0.107 14.319 0.000 1.000 1.000
## FOOD 0.655 0.049 13.290 0.000 1.000 1.000
## ATMOS 1.591 0.136 11.660 0.000 1.000 1.000
## PRODQUAL 0.491 0.067 7.337 0.000 1.000 1.000
## CHOICE 1.682 0.117 14.431 0.000 1.000 1.000
## PROF 0.845 0.087 9.728 0.000 1.000 1.000
## BRAND 1.453 0.104 14.011 0.000 1.000 1.000
## FRENCH 0.974 0.094 10.397 0.000 1.000 1.000
## .AFCOM 0.862 0.086 10.043 0.000 0.659 0.659
## .SAT 0.449 0.047 9.464 0.000 0.576 0.576
## .RI 0.237 0.022 10.945 0.000 0.667 0.667
## .COI 2.280 0.208 10.946 0.000 0.829 0.829
##
## Defined Parameters:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## rss1 -0.023 0.010 -2.223 0.026 -0.048 -0.048
## raa1 -0.004 0.010 -0.440 0.660 -0.009 -0.009
## css1 0.039 0.021 1.862 0.063 0.029 0.029
## caa1 -0.013 0.030 -0.439 0.660 -0.010 -0.010
## DECOtoRI_total -0.018 0.030 -0.592 0.554 -0.037 -0.037
## DECOtoCOI_totl -0.006 0.092 -0.060 0.952 -0.004 -0.004
## rss2 0.017 0.014 1.203 0.229 0.023 0.023
## raa2 0.005 0.016 0.330 0.741 0.007 0.007
## css2 -0.029 0.026 -1.123 0.261 -0.014 -0.014
## caa2 0.015 0.046 0.330 0.741 0.007 0.007
## FOODtoRI_total 0.060 0.047 1.280 0.200 0.082 0.082
## FOODtoCOI_totl -0.093 0.141 -0.662 0.508 -0.045 -0.045
## rss3 0.011 0.008 1.326 0.185 0.024 0.024
## raa3 0.069 0.014 4.790 0.000 0.145 0.145
## css3 -0.019 0.015 -1.213 0.225 -0.014 -0.014
## caa3 0.204 0.043 4.755 0.000 0.155 0.155
## ATMOStoRI_totl 0.120 0.028 4.255 0.000 0.254 0.254
## ATMOStoCOI_ttl 0.337 0.084 4.021 0.000 0.256 0.256
## rss4 -0.008 0.016 -0.503 0.615 -0.010 -0.010
## raa4 -0.035 0.019 -1.810 0.070 -0.041 -0.041
## css4 0.014 0.027 0.499 0.618 0.006 0.006
## caa4 -0.102 0.057 -1.807 0.071 -0.043 -0.043
## PQUALtoRI_totl 0.034 0.055 0.628 0.530 0.040 0.040
## PQUALtoCOI_ttl 0.108 0.164 0.656 0.512 0.046 0.046
## rss5 0.029 0.010 2.843 0.004 0.063 0.063
## raa5 0.019 0.010 1.921 0.055 0.040 0.040
## css5 -0.048 0.023 -2.114 0.035 -0.038 -0.038
## caa5 0.055 0.029 1.926 0.054 0.043 0.043
## CHOICEtoRI_ttl 0.031 0.028 1.109 0.267 0.067 0.067
## CHOICEtCOI_ttl 0.001 0.083 0.011 0.991 0.001 0.001
## rss6 0.099 0.028 3.480 0.001 0.152 0.152
## raa6 0.030 0.020 1.475 0.140 0.045 0.045
## css6 -0.164 0.067 -2.446 0.014 -0.091 -0.091
## caa6 0.087 0.060 1.464 0.143 0.048 0.048
## PROFtoRI_total 0.091 0.058 1.563 0.118 0.141 0.141
## PROFtoCOI_totl -0.253 0.172 -1.470 0.142 -0.140 -0.140
## rss7 0.002 0.010 0.178 0.859 0.003 0.003
## raa7 -0.003 0.011 -0.304 0.761 -0.007 -0.007
## css7 -0.003 0.016 -0.177 0.859 -0.002 -0.002
## caa7 -0.010 0.032 -0.304 0.761 -0.007 -0.007
## BRANDtoRI_totl -0.012 0.032 -0.383 0.702 -0.025 -0.025
## BRANDtoCOI_ttl 0.010 0.096 0.101 0.919 0.007 0.007
## rss8 0.022 0.011 1.928 0.054 0.037 0.037
## raa8 0.041 0.013 3.043 0.002 0.068 0.068
## css8 -0.037 0.022 -1.669 0.095 -0.022 -0.022
## caa8 0.122 0.040 3.027 0.002 0.072 0.072
## FRENCHtoRI_ttl 0.029 0.035 0.835 0.404 0.049 0.049
## FRENCHtCOI_ttl -0.042 0.106 -0.395 0.693 -0.025 -0.025
lambda = inspect(fit_SEM, what="std")$lambda
theta = inspect(fit_SEM, what="std")$theta
psi = inspect(fit_SEM, what="std")$psi# calculate indicator reliabilities (should be larger than 0.4)
indic_rel <- f_indic_rel(lambda, theta)
# pass/fail
indic_rel[[1]]| Result | |
|---|---|
| Individual Item Reliability | Fail |
# details
indic_rel[[2]]## DECO FOOD ATMOS PRODQU CHOICE PROF BRAND FRENCH AFCOM SAT RI
## Im3 0.877 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
## Im4 0.940 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
## Im5 0.578 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
## Im10 NaN 0.847 NaN NaN NaN NaN NaN NaN NaN NaN NaN
## Im14 NaN 0.912 NaN NaN NaN NaN NaN NaN NaN NaN NaN
## Im20 NaN NaN 0.712 NaN NaN NaN NaN NaN NaN NaN NaN
## Im21 NaN NaN 0.623 NaN NaN NaN NaN NaN NaN NaN NaN
## Im22 NaN NaN 0.761 NaN NaN NaN NaN NaN NaN NaN NaN
## Im11 NaN NaN NaN 0.375 NaN NaN NaN NaN NaN NaN NaN
## Im12 NaN NaN NaN 0.760 NaN NaN NaN NaN NaN NaN NaN
## Im13 NaN NaN NaN 0.731 NaN NaN NaN NaN NaN NaN NaN
## Im1 NaN NaN NaN NaN 0.949 NaN NaN NaN NaN NaN NaN
## Im2 NaN NaN NaN NaN 0.817 NaN NaN NaN NaN NaN NaN
## Im16 NaN NaN NaN NaN NaN 0.584 NaN NaN NaN NaN NaN
## Im19 NaN NaN NaN NaN NaN 0.727 NaN NaN NaN NaN NaN
## Im17 NaN NaN NaN NaN NaN NaN 0.940 NaN NaN NaN NaN
## Im18 NaN NaN NaN NaN NaN NaN 0.732 NaN NaN NaN NaN
## Im6 NaN NaN NaN NaN NaN NaN NaN 0.676 NaN NaN NaN
## Im7 NaN NaN NaN NaN NaN NaN NaN 0.892 NaN NaN NaN
## COM_A1 NaN NaN NaN NaN NaN NaN NaN NaN 0.634 NaN NaN
## COM_A2 NaN NaN NaN NaN NaN NaN NaN NaN 0.698 NaN NaN
## COM_A3 NaN NaN NaN NaN NaN NaN NaN NaN 0.667 NaN NaN
## COM_A4 NaN NaN NaN NaN NaN NaN NaN NaN 0.710 NaN NaN
## SAT_1 NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.748 NaN
## SAT_2 NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.671 NaN
## SAT_3 NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.390 NaN
## C_REP1 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.666
## C_REP2 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.867
## C_REP3 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.572
## C_CR1 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
## C_CR3 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
## C_CR4 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
## COI
## Im3 NaN
## Im4 NaN
## Im5 NaN
## Im10 NaN
## Im14 NaN
## Im20 NaN
## Im21 NaN
## Im22 NaN
## Im11 NaN
## Im12 NaN
## Im13 NaN
## Im1 NaN
## Im2 NaN
## Im16 NaN
## Im19 NaN
## Im17 NaN
## Im18 NaN
## Im6 NaN
## Im7 NaN
## COM_A1 NaN
## COM_A2 NaN
## COM_A3 NaN
## COM_A4 NaN
## SAT_1 NaN
## SAT_2 NaN
## SAT_3 NaN
## C_REP1 NaN
## C_REP2 NaN
## C_REP3 NaN
## C_CR1 0.724
## C_CR3 0.682
## C_CR4 0.649
# calculate construct reliability (should be above .6)
construct_rel <- f_construct_rel(lambda,theta)
# pass/fail
construct_rel[[1]]| Result | |
|---|---|
| Construct Reliability | Pass |
# details
construct_rel[[2]]## DECO FOOD ATMOS PRODQUAL CHOICE PROF BRAND
## DECO 0.9215576 NaN NaN NaN NaN NaN NaN
## FOOD NaN 0.9360531 NaN NaN NaN NaN NaN
## ATMOS NaN NaN 0.8740997 NaN NaN NaN NaN
## PRODQUAL NaN NaN NaN 0.8285131 NaN NaN NaN
## CHOICE NaN NaN NaN NaN 0.9379212 NaN NaN
## PROF NaN NaN NaN NaN NaN 0.7914389 NaN
## BRAND NaN NaN NaN NaN NaN NaN 0.9103502
## FRENCH NaN NaN NaN NaN NaN NaN NaN
## AFCOM NaN NaN NaN NaN NaN NaN NaN
## SAT NaN NaN NaN NaN NaN NaN NaN
## RI NaN NaN NaN NaN NaN NaN NaN
## COI NaN NaN NaN NaN NaN NaN NaN
## FRENCH AFCOM SAT RI COI
## DECO NaN NaN NaN NaN NaN
## FOOD NaN NaN NaN NaN NaN
## ATMOS NaN NaN NaN NaN NaN
## PRODQUAL NaN NaN NaN NaN NaN
## CHOICE NaN NaN NaN NaN NaN
## PROF NaN NaN NaN NaN NaN
## BRAND NaN NaN NaN NaN NaN
## FRENCH 0.8785003 NaN NaN NaN NaN
## AFCOM NaN 0.8934602 NaN NaN NaN
## SAT NaN NaN 0.8173149 NaN NaN
## RI NaN NaN NaN 0.8749194 NaN
## COI NaN NaN NaN NaN 0.8670792
# calculate Average Variance Extracted (should be above .5)
AVE <- f_AVE(lambda,theta)
# pass/fail
AVE[[1]]| Result | |
|---|---|
| Average Variance Extracted | Pass |
# details
diag(AVE[[2]])## DECO FOOD ATMOS PRODQUAL CHOICE PROF BRAND FRENCH
## 0.7983093 0.8798287 0.6986336 0.6223004 0.8832435 0.6555350 0.8359891 0.7841305
## AFCOM SAT RI COI
## 0.6771639 0.6029676 0.7014342 0.6850899
# correlations between constructs (factors...) should be lower than .7
construct_cor <- f_construct_corr(psi)
# pass / fail
construct_cor[[1]]| Result | |
|---|---|
| Construct Correlations | Pass |
# details
construct_cor[[2]]## DECO FOOD ATMOS PRODQU CHOICE PROF BRAND FRENCH AFCOM SAT
## DECO 1.000
## FOOD 0.417 1.000
## ATMOS 0.467 0.295 1.000
## PRODQUAL 0.470 0.452 0.418 1.000
## CHOICE 0.442 0.312 0.447 0.477 1.000
## PROF 0.655 0.499 0.476 0.531 0.602 1.000
## BRAND 0.516 0.325 0.516 0.565 0.521 0.602 1.000
## FRENCH 0.339 0.587 0.333 0.305 0.228 0.370 0.327 1.000
## AFCOM 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.659
## SAT 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.576
## RI 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000
## COI 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000
## RI COI
## DECO
## FOOD
## ATMOS
## PRODQUAL
## CHOICE
## PROF
## BRAND
## FRENCH
## AFCOM
## SAT
## RI 0.667
## COI -0.020 0.829
# AVE should be higher than squared correlations between constructs
fornell_larcker <- f_fornell_larcker(psi,AVE[[2]])
# pass / fail
fornell_larcker[[1]]| Result | |
|---|---|
| Fornell-Larcker Criteria | Pass |
# details (note: AVE is in the diagonals)
fornell_larcker[[2]]## DECO FOOD ATMOS PRODQU CHOICE PROF BRAND FRENCH AFCOM SAT RI
## DECO 0.798
## FOOD 0.174 0.880
## ATMOS 0.218 0.087 0.699
## PRODQUAL 0.221 0.204 0.175 0.622
## CHOICE 0.195 0.097 0.200 0.228 0.883
## PROF 0.429 0.249 0.227 0.282 0.362 0.656
## BRAND 0.266 0.106 0.266 0.319 0.271 0.362 0.836
## FRENCH 0.115 0.345 0.111 0.093 0.052 0.137 0.107 0.784
## AFCOM 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.677
## SAT 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.603
## RI 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.701
## COI 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000
## COI
## DECO
## FOOD
## ATMOS
## PRODQUAL
## CHOICE
## PROF
## BRAND
## FRENCH
## AFCOM
## SAT
## RI
## COI 0.685
arrange(modificationindices(fit_SEM),-mi) |> filter(mi>10)## lhs op rhs mi epc sepc.lv sepc.all sepc.nox
## 1 AFCOM =~ C_REP1 56.860 0.174 0.199 0.272 0.272
## 2 C_REP2 ~~ C_REP3 53.856 0.103 0.103 1.250 1.250
## 3 Im10 ~~ Im14 37.578 98.306 98.306 1116.018 1116.018
## 4 Im6 ~~ Im7 37.386 10.888 10.888 40.087 40.087
## 5 SAT ~ COI 37.385 0.457 0.859 0.859 0.859
## 6 AFCOM ~ COI 37.384 -1.343 -1.946 -1.946 -1.946
## 7 AFCOM ~ SAT 37.384 0.480 0.370 0.370 0.370
## 8 SAT ~ AFCOM 37.384 0.250 0.324 0.324 0.324
## 9 AFCOM ~~ SAT 37.384 0.215 0.346 0.346 0.346
## 10 AFCOM ~ RI 37.384 2.236 1.166 1.166 1.166
## 11 SAT ~ RI 37.384 1.354 0.915 0.915 0.915
## 12 Im16 ~~ Im19 37.375 3.054 3.054 6.702 6.702
## 13 Im1 ~~ Im2 37.373 14.223 14.223 86.295 86.295
## 14 COM_A1 ~~ COM_A2 24.605 0.250 0.250 0.326 0.326
## 15 BRAND =~ Im13 23.644 0.217 0.262 0.218 0.218
## 16 ATMOS =~ C_REP1 21.773 0.091 0.115 0.157 0.157
## 17 Im11 ~~ Im13 19.981 -0.183 -0.183 -0.324 -0.324
## 18 C_REP1 ~~ C_REP3 18.365 -0.056 -0.056 -0.368 -0.368
## 19 BRAND =~ Im12 17.448 -0.179 -0.215 -0.190 -0.190
## 20 AFCOM =~ C_REP2 15.936 -0.079 -0.091 -0.146 -0.146
## 21 RI =~ SAT_2 15.148 0.256 0.153 0.152 0.152
## 22 CHOICE =~ Im20 14.303 -0.150 -0.194 -0.130 -0.130
## 23 Im21 ~~ Im22 14.074 -0.239 -0.239 -0.381 -0.381
## 24 Im11 ~~ Im12 13.834 0.146 0.146 0.291 0.291
## 25 CHOICE =~ Im13 13.663 0.133 0.172 0.143 0.143
## 26 AFCOM =~ Im11 13.312 0.142 0.163 0.142 0.142
## 27 COM_A3 ~~ C_REP1 13.001 0.077 0.077 0.194 0.194
## 28 FOOD =~ Im11 12.873 0.216 0.175 0.153 0.153
## 29 SAT =~ COM_A3 12.402 0.212 0.187 0.115 0.115
## 30 AFCOM =~ C_REP3 12.246 -0.065 -0.075 -0.135 -0.135
## 31 Im21 ~~ C_REP3 11.210 0.052 0.052 0.172 0.172
## 32 ATMOS =~ Im12 11.167 -0.115 -0.145 -0.128 -0.128
## 33 PRODQUAL =~ C_CR4 11.166 0.305 0.214 0.108 0.108
## 34 RI =~ COM_A1 11.069 0.291 0.174 0.121 0.121
## 35 CHOICE =~ Im12 10.903 -0.113 -0.147 -0.129 -0.129
## 36 CHOICE =~ C_REP1 10.720 0.056 0.073 0.100 0.100
## 37 Im13 ~~ Im1 10.522 0.067 0.067 0.356 0.356
This model is much better and is satisfactory as we can see from the fit assessments above.
Looking at the modification indices we see that variable C_REP1 wants to link up with AFCOM, but changing this configuration makes the model perform much worse.
Finally we check if we can improve the model by adding some correlations between the mediators and the outcome dimensions. This makes sense as we would expect Customer Satisfaction and Affective commitment to be correlated and Repurchase Intention and Cocreation intention to also be correlated to each other.
# Im8, Im9, Im15 are excluded
# we have allowed correlation between SAT and AFCOM and also between RI and COI
model_SEM <- "
DECO =~ Im3 + Im4 + Im5
FOOD =~ Im10 + Im14
ATMOS =~ Im20 + Im21 + Im22
PRODQUAL =~ Im11 + Im12 + Im13
CHOICE =~ Im1 + Im2
PROF =~ Im16 + Im19
BRAND =~ Im17 + Im18
FRENCH =~ Im6 + Im7
AFCOM =~ COM_A1 + COM_A2 + COM_A3 + COM_A4
SAT =~ SAT_1 + SAT_2 + SAT_3
RI =~ C_REP1 + C_REP2 + C_REP3
COI =~ C_CR1 + C_CR2 + C_CR3 + C_CR4
SAT ~ s1*DECO + s2*FOOD + s3*ATMOS + s4*PRODQUAL + s5*CHOICE + s6*PROF + s7*BRAND + s8*FRENCH
AFCOM ~ a1*DECO + a2*FOOD + a3*ATMOS + a4*PRODQUAL + a5*CHOICE + a6*PROF + a7*BRAND + a8*FRENCH
SAT ~~ AFCOM
RI ~ rs*SAT + ra*AFCOM + r01*DECO + r02*FOOD + r03*ATMOS + r04*PRODQUAL + r05*CHOICE + r06*PROF + r07*BRAND + r08*FRENCH
COI ~ cs*SAT + ca*AFCOM + c01*DECO + c02*FOOD + c03*ATMOS + c04*PRODQUAL + c05*CHOICE + c06*PROF + c07*BRAND + c08*FRENCH
RI ~~ COI
rss1:= rs*s1
raa1:= ra*a1
css1:= cs*s1
caa1:= ca*a1
DECOtoRI:= r01 + rss1 + raa1
DECOtoCOI:= c01 + css1 + caa1
rss2:= rs*s2
raa2:= ra*a2
css2:= cs*s2
caa2:= ca*a2
FOODtoRI_total:= r02 + rss2 + raa2
FOODtoCOI_total:= c02 + css2 + caa2
rss3:= rs*s3
raa3:= ra*a3
css3:= cs*s3
caa3:= ca*a3
ATMOStoRI_total:= r03 + rss3 + raa3
ATMOStoCOI_total:= c03 + css3 + caa3
rss4:= rs*s4
raa4:= ra*a4
css4:= cs*s4
caa4:= ca*a4
PQUALtoRI_total:= r04 + rss4 + raa4
PQUALtoCOI_total:= c04 + css4 + caa4
rss5:= rs*s5
raa5:= ra*a5
css5:= cs*s5
caa5:= ca*a5
CHOICEtoRI_total:= r05 + rss5 + raa5
CHOICEtoCOI_total:= c05 + css5 + caa5
rss6:= rs*s6
raa6:= ra*a6
css6:= cs*s6
caa6:= ca*a6
PROFtoRI_total:= r06 + rss6 + raa6
PROFtoCOI_total:= c06 + css6 + caa6
rss7:= rs*s7
raa7:= ra*a7
css7:= cs*s7
caa7:= ca*a7
BRANDtoRI_total:= r07 + rss7 + raa7
BRANDtoCOI_total:= c07 + css7 + caa7
rss8:= rs*s8
raa8:= ra*a8
css8:= cs*s8
caa8:= ca*a8
FRENCHtoRI_total:= r08 + rss8 + raa8
FRENCHtoCOI_total:= c08 + css8 + caa8
"fit_SEM <- cfa(model_SEM, data=survey, missing="ML")semPaths(fit_SEM, what = "col", whatLabels = "par", style = "ram",
rotation = 2, layout = "tree3",
mar = c(1, 2, 1, 2), #margins
nCharNodes = 7,
shapeMan = "rectangle", # variable shape
sizeMan = 4, # variable shape size
sizeMan2 = 3, # variable shape vertical stretch
# structural = T, # don't plot image variables (manifests)
sizeInt = 1, # intercept size
intercepts = F, # don't include intercepts
sizeLat = 5, #factor size
asize = 2, # arrow size
curvePivot=T, # edge broken curve
edge.label.cex = .5, # edge label size
# edge.color = "skyblue4",
# levels= c(1,2,7,8,9,10),
groups = "latents",
cut = .5 #cutoff for edges,
)Let us now assess this model
global_fit_measures <- f_global_fit_measures(fit_SEM)
# check global fit pass/fail of global fit measures
global_fit_measures[[1]]| Value | Result | |
|---|---|---|
| pvalue | 0.000 | FAIL |
| chisq | 711.708 |
|
| cfi | 0.976 | Accept model |
| rmsea | 0.035 | Good fit |
# output full summary
global_fit_measures[[2]]## lavaan 0.6.15 ended normally after 146 iterations
##
## Estimator ML
## Optimization method NLMINB
## Number of model parameters 165
##
## Number of observations 553
## Number of missing patterns 144
##
## Model Test User Model:
##
## Test statistic 711.708
## Degrees of freedom 429
## P-value (Chi-square) 0.000
##
## Model Test Baseline Model:
##
## Test statistic 12148.481
## Degrees of freedom 528
## P-value 0.000
##
## User Model versus Baseline Model:
##
## Comparative Fit Index (CFI) 0.976
## Tucker-Lewis Index (TLI) 0.970
##
## Robust Comparative Fit Index (CFI) 0.976
## Robust Tucker-Lewis Index (TLI) 0.970
##
## Loglikelihood and Information Criteria:
##
## Loglikelihood user model (H0) -23357.440
## Loglikelihood unrestricted model (H1) -23001.586
##
## Akaike (AIC) 47044.880
## Bayesian (BIC) 47756.914
## Sample-size adjusted Bayesian (SABIC) 47233.130
##
## Root Mean Square Error of Approximation:
##
## RMSEA 0.035
## 90 Percent confidence interval - lower 0.030
## 90 Percent confidence interval - upper 0.039
## P-value H_0: RMSEA <= 0.050 1.000
## P-value H_0: RMSEA >= 0.080 0.000
##
## Robust RMSEA 0.035
## 90 Percent confidence interval - lower 0.030
## 90 Percent confidence interval - upper 0.040
## P-value H_0: Robust RMSEA <= 0.050 1.000
## P-value H_0: Robust RMSEA >= 0.080 0.000
##
## Standardized Root Mean Square Residual:
##
## SRMR 0.038
##
## Parameter Estimates:
##
## Standard errors Standard
## Information Observed
## Observed information based on Hessian
##
## Latent Variables:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## DECO =~
## Im3 1.000 1.235 0.936
## Im4 1.057 0.025 42.733 0.000 1.306 0.970
## Im5 0.818 0.034 23.809 0.000 1.011 0.760
## FOOD =~
## Im10 1.000 0.810 0.921
## Im14 1.020 0.036 28.621 0.000 0.826 0.955
## ATMOS =~
## Im20 1.000 1.261 0.843
## Im21 0.857 0.041 20.991 0.000 1.080 0.788
## Im22 1.059 0.046 23.008 0.000 1.335 0.874
## PRODQUAL =~
## Im11 1.000 0.701 0.613
## Im12 1.413 0.094 15.002 0.000 0.990 0.871
## Im13 1.470 0.106 13.916 0.000 1.030 0.856
## CHOICE =~
## Im1 1.000 1.300 0.977
## Im2 0.892 0.032 27.977 0.000 1.159 0.902
## PROF =~
## Im16 1.000 0.923 0.767
## Im19 1.041 0.059 17.769 0.000 0.961 0.854
## BRAND =~
## Im17 1.000 1.205 0.970
## Im18 0.992 0.041 24.118 0.000 1.196 0.855
## FRENCH =~
## Im6 1.000 0.983 0.819
## Im7 1.167 0.067 17.504 0.000 1.147 0.948
## AFCOM =~
## COM_A1 1.000 1.142 0.795
## COM_A2 1.168 0.055 21.339 0.000 1.333 0.830
## COM_A3 1.168 0.058 20.111 0.000 1.334 0.820
## COM_A4 1.285 0.062 20.892 0.000 1.467 0.845
## SAT =~
## SAT_1 1.000 0.875 0.858
## SAT_2 0.948 0.049 19.422 0.000 0.829 0.826
## SAT_3 0.816 0.055 14.852 0.000 0.714 0.624
## RI =~
## C_REP1 1.000 0.605 0.820
## C_REP2 0.970 0.043 22.491 0.000 0.587 0.933
## C_REP3 0.702 0.037 19.032 0.000 0.424 0.760
## COI =~
## C_CR1 1.000 1.626 0.841
## C_CR2 0.559 0.051 10.906 0.000 0.909 0.488
## C_CR3 1.053 0.051 20.683 0.000 1.713 0.831
## C_CR4 0.972 0.048 20.203 0.000 1.580 0.802
##
## Regressions:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## SAT ~
## DECO (s1) -0.099 0.042 -2.353 0.019 -0.140 -0.140
## FOOD (s2) 0.088 0.064 1.379 0.168 0.082 0.082
## ATMOS (s3) 0.037 0.038 0.973 0.331 0.053 0.053
## PRODQUAL (s4) -0.023 0.075 -0.309 0.758 -0.018 -0.018
## CHOICE (s5) 0.135 0.039 3.484 0.000 0.200 0.200
## PROF (s6) 0.435 0.082 5.300 0.000 0.459 0.459
## BRAND (s7) 0.015 0.044 0.347 0.728 0.021 0.021
## FRENCH (s8) 0.096 0.049 1.983 0.047 0.108 0.108
## AFCOM ~
## DECO (a1) 0.006 0.054 0.108 0.914 0.006 0.006
## FOOD (a2) 0.049 0.083 0.590 0.555 0.035 0.035
## ATMOS (a3) 0.372 0.052 7.208 0.000 0.411 0.411
## PRODQUAL (a4) -0.176 0.098 -1.793 0.073 -0.108 -0.108
## CHOICE (a5) 0.114 0.049 2.313 0.021 0.130 0.130
## PROF (a6) 0.059 0.101 0.586 0.558 0.048 0.048
## BRAND (a7) -0.001 0.057 -0.017 0.987 -0.001 -0.001
## FRENCH (a8) 0.218 0.064 3.427 0.001 0.188 0.188
## RI ~
## SAT (rs) 0.212 0.047 4.510 0.000 0.306 0.306
## AFCOM (ra) 0.173 0.031 5.515 0.000 0.326 0.326
## DECO (r01) 0.008 0.029 0.286 0.775 0.017 0.017
## FOOD (r02) 0.038 0.043 0.875 0.382 0.051 0.051
## ATMOS (r03) 0.045 0.028 1.602 0.109 0.095 0.095
## PRODQUAL (r04) 0.074 0.051 1.446 0.148 0.086 0.086
## CHOICE (r05) -0.015 0.026 -0.570 0.569 -0.031 -0.031
## PROF (r06) -0.031 0.059 -0.531 0.595 -0.048 -0.048
## BRAND (r07) -0.011 0.030 -0.384 0.701 -0.023 -0.023
## FRENCH (r08) -0.030 0.033 -0.918 0.359 -0.049 -0.049
## COI ~
## SAT (cs) -0.382 0.137 -2.781 0.005 -0.205 -0.205
## AFCOM (ca) 0.577 0.095 6.074 0.000 0.405 0.405
## DECO (c01) -0.045 0.089 -0.504 0.614 -0.034 -0.034
## FOOD (c02) -0.054 0.132 -0.407 0.684 -0.027 -0.027
## ATMOS (c03) 0.141 0.087 1.625 0.104 0.109 0.109
## PRODQUAL (c04) 0.201 0.157 1.286 0.198 0.087 0.087
## CHOICE (c05) -0.018 0.079 -0.234 0.815 -0.015 -0.015
## PROF (c06) -0.139 0.179 -0.778 0.437 -0.079 -0.079
## BRAND (c07) 0.020 0.091 0.224 0.823 0.015 0.015
## FRENCH (c08) -0.131 0.102 -1.284 0.199 -0.079 -0.079
##
## Covariances:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## .AFCOM ~~
## .SAT 0.214 0.037 5.751 0.000 0.342 0.342
## .RI ~~
## .COI -0.006 0.038 -0.159 0.873 -0.008 -0.008
## DECO ~~
## FOOD 0.417 0.050 8.387 0.000 0.417 0.417
## ATMOS 0.728 0.082 8.912 0.000 0.467 0.467
## PRODQUAL 0.407 0.051 8.025 0.000 0.470 0.470
## CHOICE 0.709 0.079 9.021 0.000 0.441 0.441
## PROF 0.745 0.071 10.543 0.000 0.653 0.653
## BRAND 0.768 0.076 10.127 0.000 0.516 0.516
## FRENCH 0.410 0.063 6.478 0.000 0.337 0.337
## FOOD ~~
## ATMOS 0.301 0.051 5.948 0.000 0.295 0.295
## PRODQUAL 0.256 0.034 7.640 0.000 0.452 0.452
## CHOICE 0.327 0.050 6.602 0.000 0.311 0.311
## PROF 0.372 0.043 8.618 0.000 0.498 0.498
## BRAND 0.317 0.047 6.797 0.000 0.325 0.325
## FRENCH 0.467 0.047 9.968 0.000 0.586 0.586
## ATMOS ~~
## PRODQUAL 0.369 0.053 7.009 0.000 0.418 0.418
## CHOICE 0.734 0.084 8.697 0.000 0.448 0.448
## PROF 0.555 0.068 8.121 0.000 0.477 0.477
## BRAND 0.784 0.081 9.710 0.000 0.516 0.516
## FRENCH 0.413 0.065 6.381 0.000 0.333 0.333
## PRODQUAL ~~
## CHOICE 0.435 0.053 8.130 0.000 0.477 0.477
## PROF 0.342 0.043 7.958 0.000 0.529 0.529
## BRAND 0.477 0.053 9.033 0.000 0.565 0.565
## FRENCH 0.210 0.037 5.617 0.000 0.305 0.305
## CHOICE ~~
## PROF 0.719 0.072 10.041 0.000 0.599 0.599
## BRAND 0.815 0.079 10.358 0.000 0.520 0.520
## FRENCH 0.290 0.061 4.775 0.000 0.227 0.227
## PROF ~~
## BRAND 0.668 0.066 10.100 0.000 0.600 0.600
## FRENCH 0.335 0.051 6.540 0.000 0.369 0.369
## BRAND ~~
## FRENCH 0.385 0.061 6.300 0.000 0.325 0.325
##
## Intercepts:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## .Im3 4.995 0.056 88.568 0.000 4.995 3.786
## .Im4 4.999 0.057 86.999 0.000 4.999 3.713
## .Im5 5.036 0.057 87.851 0.000 5.036 3.787
## .Im10 6.100 0.037 162.775 0.000 6.100 6.936
## .Im14 6.138 0.037 165.847 0.000 6.138 7.092
## .Im20 4.672 0.064 73.216 0.000 4.672 3.125
## .Im21 5.139 0.058 87.977 0.000 5.139 3.750
## .Im22 4.279 0.065 65.468 0.000 4.279 2.801
## .Im11 5.653 0.049 115.299 0.000 5.653 4.944
## .Im12 5.665 0.049 116.160 0.000 5.665 4.986
## .Im13 5.448 0.052 105.692 0.000 5.448 4.528
## .Im1 4.792 0.057 84.285 0.000 4.792 3.600
## .Im2 4.858 0.055 88.412 0.000 4.858 3.780
## .Im16 5.135 0.052 99.189 0.000 5.135 4.269
## .Im19 5.145 0.048 107.016 0.000 5.145 4.576
## .Im17 5.025 0.053 94.556 0.000 5.025 4.042
## .Im18 4.595 0.060 76.462 0.000 4.595 3.287
## .Im6 5.827 0.051 113.796 0.000 5.827 4.858
## .Im7 5.754 0.052 110.825 0.000 5.754 4.756
## .COM_A1 4.287 0.061 69.767 0.000 4.287 2.984
## .COM_A2 3.887 0.069 56.694 0.000 3.887 2.421
## .COM_A3 3.543 0.070 50.854 0.000 3.543 2.178
## .COM_A4 3.456 0.074 46.684 0.000 3.456 1.992
## .SAT_1 5.344 0.043 122.984 0.000 5.344 5.240
## .SAT_2 5.482 0.043 127.792 0.000 5.482 5.457
## .SAT_3 5.458 0.050 109.431 0.000 5.458 4.773
## .C_REP1 4.283 0.031 136.297 0.000 4.283 5.807
## .C_REP2 4.507 0.027 167.714 0.000 4.507 7.166
## .C_REP3 4.677 0.024 195.460 0.000 4.677 8.381
## .C_CR1 2.677 0.083 32.290 0.000 2.677 1.384
## .C_CR2 4.616 0.081 56.955 0.000 4.616 2.477
## .C_CR3 3.261 0.088 37.119 0.000 3.261 1.583
## .C_CR4 2.787 0.084 33.098 0.000 2.787 1.414
## DECO 0.000 0.000 0.000
## FOOD 0.000 0.000 0.000
## ATMOS 0.000 0.000 0.000
## PRODQUAL 0.000 0.000 0.000
## CHOICE 0.000 0.000 0.000
## PROF 0.000 0.000 0.000
## BRAND 0.000 0.000 0.000
## FRENCH 0.000 0.000 0.000
## .AFCOM 0.000 0.000 0.000
## .SAT 0.000 0.000 0.000
## .RI 0.000 0.000 0.000
## .COI 0.000 0.000 0.000
##
## Variances:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## .Im3 0.214 0.024 8.803 0.000 0.214 0.123
## .Im4 0.108 0.024 4.482 0.000 0.108 0.059
## .Im5 0.747 0.049 15.218 0.000 0.747 0.422
## .Im10 0.118 0.019 6.186 0.000 0.118 0.152
## .Im14 0.066 0.019 3.519 0.000 0.066 0.088
## .Im20 0.645 0.060 10.836 0.000 0.645 0.289
## .Im21 0.711 0.056 12.641 0.000 0.711 0.379
## .Im22 0.551 0.061 8.972 0.000 0.551 0.236
## .Im11 0.817 0.055 14.806 0.000 0.817 0.625
## .Im12 0.311 0.040 7.847 0.000 0.311 0.241
## .Im13 0.388 0.045 8.700 0.000 0.388 0.268
## .Im1 0.082 0.048 1.728 0.084 0.082 0.046
## .Im2 0.308 0.042 7.322 0.000 0.308 0.186
## .Im16 0.595 0.050 11.791 0.000 0.595 0.411
## .Im19 0.342 0.043 7.923 0.000 0.342 0.270
## .Im17 0.092 0.045 2.045 0.041 0.092 0.060
## .Im18 0.524 0.055 9.577 0.000 0.524 0.268
## .Im6 0.473 0.054 8.751 0.000 0.473 0.328
## .Im7 0.148 0.062 2.377 0.017 0.148 0.101
## .COM_A1 0.760 0.058 13.010 0.000 0.760 0.368
## .COM_A2 0.801 0.066 12.153 0.000 0.801 0.311
## .COM_A3 0.868 0.070 12.495 0.000 0.868 0.328
## .COM_A4 0.860 0.074 11.693 0.000 0.860 0.286
## .SAT_1 0.275 0.033 8.390 0.000 0.275 0.264
## .SAT_2 0.321 0.032 9.951 0.000 0.321 0.319
## .SAT_3 0.798 0.056 14.350 0.000 0.798 0.610
## .C_REP1 0.178 0.016 11.279 0.000 0.178 0.328
## .C_REP2 0.052 0.010 4.973 0.000 0.052 0.130
## .C_REP3 0.131 0.009 14.053 0.000 0.131 0.422
## .C_CR1 1.096 0.108 10.116 0.000 1.096 0.293
## .C_CR2 2.646 0.172 15.378 0.000 2.646 0.762
## .C_CR3 1.313 0.126 10.460 0.000 1.313 0.309
## .C_CR4 1.387 0.119 11.661 0.000 1.387 0.357
## DECO 1.526 0.107 14.318 0.000 1.000 1.000
## FOOD 0.656 0.049 13.292 0.000 1.000 1.000
## ATMOS 1.590 0.136 11.652 0.000 1.000 1.000
## PRODQUAL 0.491 0.067 7.334 0.000 1.000 1.000
## CHOICE 1.690 0.117 14.444 0.000 1.000 1.000
## PROF 0.852 0.087 9.761 0.000 1.000 1.000
## BRAND 1.453 0.104 14.011 0.000 1.000 1.000
## FRENCH 0.966 0.094 10.291 0.000 1.000 1.000
## .AFCOM 0.872 0.086 10.080 0.000 0.669 0.669
## .SAT 0.449 0.046 9.730 0.000 0.587 0.587
## .RI 0.237 0.022 10.963 0.000 0.649 0.649
## .COI 2.226 0.204 10.924 0.000 0.842 0.842
##
## Defined Parameters:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## rss1 -0.021 0.010 -2.080 0.038 -0.043 -0.043
## raa1 0.001 0.009 0.107 0.914 0.002 0.002
## css1 0.038 0.021 1.802 0.072 0.029 0.029
## caa1 0.003 0.031 0.108 0.914 0.003 0.003
## DECOtoRI -0.012 0.031 -0.380 0.704 -0.024 -0.024
## DECOtoCOI -0.004 0.090 -0.040 0.968 -0.003 -0.003
## rss2 0.019 0.014 1.323 0.186 0.025 0.025
## raa2 0.009 0.014 0.587 0.557 0.011 0.011
## css2 -0.034 0.027 -1.232 0.218 -0.017 -0.017
## caa2 0.028 0.048 0.588 0.557 0.014 0.014
## FOODtoRI_total 0.065 0.047 1.375 0.169 0.087 0.087
## FOODtoCOI_totl -0.059 0.138 -0.430 0.667 -0.029 -0.029
## rss3 0.008 0.008 0.955 0.339 0.016 0.016
## raa3 0.064 0.014 4.479 0.000 0.134 0.134
## css3 -0.014 0.015 -0.914 0.361 -0.011 -0.011
## caa3 0.214 0.045 4.781 0.000 0.166 0.166
## ATMOStoRI_totl 0.117 0.029 4.119 0.000 0.245 0.245
## ATMOStoCOI_ttl 0.341 0.082 4.147 0.000 0.265 0.265
## rss4 -0.005 0.016 -0.308 0.758 -0.006 -0.006
## raa4 -0.030 0.018 -1.701 0.089 -0.035 -0.035
## css4 0.009 0.029 0.307 0.759 0.004 0.004
## caa4 -0.101 0.059 -1.716 0.086 -0.044 -0.044
## PQUALtoRI_totl 0.039 0.055 0.700 0.484 0.045 0.045
## PQUALtoCOI_ttl 0.109 0.161 0.675 0.500 0.047 0.047
## rss5 0.028 0.010 2.827 0.005 0.061 0.061
## raa5 0.020 0.009 2.141 0.032 0.042 0.042
## css5 -0.051 0.024 -2.171 0.030 -0.041 -0.041
## caa5 0.066 0.030 2.176 0.030 0.053 0.053
## CHOICEtoRI_ttl 0.034 0.028 1.214 0.225 0.072 0.072
## CHOICEtCOI_ttl -0.004 0.081 -0.051 0.959 -0.003 -0.003
## rss6 0.092 0.027 3.400 0.001 0.140 0.140
## raa6 0.010 0.018 0.582 0.561 0.016 0.016
## css6 -0.166 0.067 -2.487 0.013 -0.094 -0.094
## caa6 0.034 0.058 0.582 0.560 0.019 0.019
## PROFtoRI_total 0.071 0.058 1.229 0.219 0.108 0.108
## PROFtoCOI_totl -0.271 0.168 -1.614 0.106 -0.154 -0.154
## rss7 0.003 0.009 0.346 0.729 0.006 0.006
## raa7 -0.000 0.010 -0.017 0.987 -0.000 -0.000
## css7 -0.006 0.017 -0.345 0.730 -0.004 -0.004
## caa7 -0.001 0.033 -0.017 0.987 -0.000 -0.000
## BRANDtoRI_totl -0.008 0.033 -0.255 0.799 -0.017 -0.017
## BRANDtoCOI_ttl 0.014 0.094 0.147 0.883 0.010 0.010
## rss8 0.020 0.011 1.824 0.068 0.033 0.033
## raa8 0.038 0.013 2.922 0.003 0.061 0.061
## css8 -0.037 0.023 -1.624 0.104 -0.022 -0.022
## caa8 0.126 0.042 2.999 0.003 0.076 0.076
## FRENCHtoRI_ttl 0.028 0.036 0.775 0.438 0.045 0.045
## FRENCHtCOI_ttl -0.042 0.104 -0.406 0.685 -0.026 -0.026
lambda = inspect(fit_SEM, what="std")$lambda
theta = inspect(fit_SEM, what="std")$theta
psi = inspect(fit_SEM, what="std")$psi# calculate indicator reliabilities (should be larger than 0.4)
indic_rel <- f_indic_rel(lambda, theta)
# pass/fail
indic_rel[[1]]| Result | |
|---|---|
| Individual Item Reliability | Fail |
# details
indic_rel[[2]]## DECO FOOD ATMOS PRODQU CHOICE PROF BRAND FRENCH AFCOM SAT RI
## Im3 0.877 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
## Im4 0.941 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
## Im5 0.578 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
## Im10 NaN 0.848 NaN NaN NaN NaN NaN NaN NaN NaN NaN
## Im14 NaN 0.912 NaN NaN NaN NaN NaN NaN NaN NaN NaN
## Im20 NaN NaN 0.711 NaN NaN NaN NaN NaN NaN NaN NaN
## Im21 NaN NaN 0.621 NaN NaN NaN NaN NaN NaN NaN NaN
## Im22 NaN NaN 0.764 NaN NaN NaN NaN NaN NaN NaN NaN
## Im11 NaN NaN NaN 0.375 NaN NaN NaN NaN NaN NaN NaN
## Im12 NaN NaN NaN 0.759 NaN NaN NaN NaN NaN NaN NaN
## Im13 NaN NaN NaN 0.732 NaN NaN NaN NaN NaN NaN NaN
## Im1 NaN NaN NaN NaN 0.954 NaN NaN NaN NaN NaN NaN
## Im2 NaN NaN NaN NaN 0.814 NaN NaN NaN NaN NaN NaN
## Im16 NaN NaN NaN NaN NaN 0.589 NaN NaN NaN NaN NaN
## Im19 NaN NaN NaN NaN NaN 0.730 NaN NaN NaN NaN NaN
## Im17 NaN NaN NaN NaN NaN NaN 0.940 NaN NaN NaN NaN
## Im18 NaN NaN NaN NaN NaN NaN 0.732 NaN NaN NaN NaN
## Im6 NaN NaN NaN NaN NaN NaN NaN 0.672 NaN NaN NaN
## Im7 NaN NaN NaN NaN NaN NaN NaN 0.899 NaN NaN NaN
## COM_A1 NaN NaN NaN NaN NaN NaN NaN NaN 0.632 NaN NaN
## COM_A2 NaN NaN NaN NaN NaN NaN NaN NaN 0.689 NaN NaN
## COM_A3 NaN NaN NaN NaN NaN NaN NaN NaN 0.672 NaN NaN
## COM_A4 NaN NaN NaN NaN NaN NaN NaN NaN 0.714 NaN NaN
## SAT_1 NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.736 NaN
## SAT_2 NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.681 NaN
## SAT_3 NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.390 NaN
## C_REP1 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.672
## C_REP2 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.870
## C_REP3 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.578
## C_CR1 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
## C_CR2 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
## C_CR3 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
## C_CR4 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
## COI
## Im3 NaN
## Im4 NaN
## Im5 NaN
## Im10 NaN
## Im14 NaN
## Im20 NaN
## Im21 NaN
## Im22 NaN
## Im11 NaN
## Im12 NaN
## Im13 NaN
## Im1 NaN
## Im2 NaN
## Im16 NaN
## Im19 NaN
## Im17 NaN
## Im18 NaN
## Im6 NaN
## Im7 NaN
## COM_A1 NaN
## COM_A2 NaN
## COM_A3 NaN
## COM_A4 NaN
## SAT_1 NaN
## SAT_2 NaN
## SAT_3 NaN
## C_REP1 NaN
## C_REP2 NaN
## C_REP3 NaN
## C_CR1 0.707
## C_CR2 0.238
## C_CR3 0.691
## C_CR4 0.643
# calculate construct reliability (should be above .6)
construct_rel <- f_construct_rel(lambda,theta)
# pass/fail
construct_rel[[1]]| Result | |
|---|---|
| Construct Reliability | Pass |
# details
construct_rel[[2]]## DECO FOOD ATMOS PRODQUAL CHOICE PROF BRAND
## DECO 0.921565 NaN NaN NaN NaN NaN NaN
## FOOD NaN 0.9360467 NaN NaN NaN NaN NaN
## ATMOS NaN NaN 0.8742496 NaN NaN NaN NaN
## PRODQUAL NaN NaN NaN 0.8285012 NaN NaN NaN
## CHOICE NaN NaN NaN NaN 0.9381434 NaN NaN
## PROF NaN NaN NaN NaN NaN 0.7941162 NaN
## BRAND NaN NaN NaN NaN NaN NaN 0.9103409
## FRENCH NaN NaN NaN NaN NaN NaN NaN
## AFCOM NaN NaN NaN NaN NaN NaN NaN
## SAT NaN NaN NaN NaN NaN NaN NaN
## RI NaN NaN NaN NaN NaN NaN NaN
## COI NaN NaN NaN NaN NaN NaN NaN
## FRENCH AFCOM SAT RI COI
## DECO NaN NaN NaN NaN NaN
## FOOD NaN NaN NaN NaN NaN
## ATMOS NaN NaN NaN NaN NaN
## PRODQUAL NaN NaN NaN NaN NaN
## CHOICE NaN NaN NaN NaN NaN
## PROF NaN NaN NaN NaN NaN
## BRAND NaN NaN NaN NaN NaN
## FRENCH 0.879139 NaN NaN NaN NaN
## AFCOM NaN 0.8932691 NaN NaN NaN
## SAT NaN NaN 0.8169017 NaN NaN
## RI NaN NaN NaN 0.8776212 NaN
## COI NaN NaN NaN NaN 0.8359885
# calculate Average Variance Extracted (should be above .5)
AVE <- f_AVE(lambda,theta)
# pass/fail
AVE[[1]]| Result | |
|---|---|
| Average Variance Extracted | Pass |
# details
diag(AVE[[2]])## DECO FOOD ATMOS PRODQUAL CHOICE PROF BRAND FRENCH
## 0.7983252 0.8798164 0.6989400 0.6222784 0.8836553 0.6591801 0.8359729 0.7852351
## AFCOM SAT RI COI
## 0.6767299 0.6022341 0.7065602 0.5697335
# correlations between constructs (factors...) should be lower than .7
construct_cor <- f_construct_corr(psi)
# pass / fail
construct_cor[[1]]| Result | |
|---|---|
| Construct Correlations | Pass |
# details
construct_cor[[2]]## DECO FOOD ATMOS PRODQU CHOICE PROF BRAND FRENCH AFCOM SAT
## DECO 1.000
## FOOD 0.417 1.000
## ATMOS 0.467 0.295 1.000
## PRODQUAL 0.470 0.452 0.418 1.000
## CHOICE 0.441 0.311 0.448 0.477 1.000
## PROF 0.653 0.498 0.477 0.529 0.599 1.000
## BRAND 0.516 0.325 0.516 0.565 0.520 0.600 1.000
## FRENCH 0.337 0.586 0.333 0.305 0.227 0.369 0.325 1.000
## AFCOM 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.669
## SAT 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.342 0.587
## RI 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000
## COI 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000
## RI COI
## DECO
## FOOD
## ATMOS
## PRODQUAL
## CHOICE
## PROF
## BRAND
## FRENCH
## AFCOM
## SAT
## RI 0.649
## COI -0.008 0.842
# AVE should be higher than squared correlations between constructs
fornell_larcker <- f_fornell_larcker(psi,AVE[[2]])
# pass / fail
fornell_larcker[[1]]| Result | |
|---|---|
| Fornell-Larcker Criteria | Pass |
# details (note: AVE is in the diagonals)
fornell_larcker[[2]]## DECO FOOD ATMOS PRODQU CHOICE PROF BRAND FRENCH AFCOM SAT RI
## DECO 0.798
## FOOD 0.174 0.880
## ATMOS 0.218 0.087 0.699
## PRODQUAL 0.221 0.204 0.175 0.622
## CHOICE 0.195 0.097 0.200 0.228 0.884
## PROF 0.427 0.248 0.228 0.280 0.359 0.659
## BRAND 0.266 0.106 0.266 0.320 0.270 0.361 0.836
## FRENCH 0.114 0.344 0.111 0.093 0.052 0.136 0.106 0.785
## AFCOM 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.677
## SAT 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.117 0.602
## RI 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.707
## COI 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000
## COI
## DECO
## FOOD
## ATMOS
## PRODQUAL
## CHOICE
## PROF
## BRAND
## FRENCH
## AFCOM
## SAT
## RI
## COI 0.570
arrange(modificationindices(fit_SEM),-mi) |> filter(mi>10)## lhs op rhs mi epc sepc.lv sepc.all sepc.nox
## 1 AFCOM =~ C_REP1 62.289 0.190 0.217 0.294 0.294
## 2 C_REP2 ~~ C_REP3 51.766 0.098 0.098 1.191 1.191
## 3 COM_A1 ~~ COM_A2 27.168 0.260 0.260 0.333 0.333
## 4 BRAND =~ Im13 23.384 0.216 0.261 0.217 0.217
## 5 ATMOS =~ C_REP1 21.217 0.089 0.112 0.152 0.152
## 6 Im11 ~~ Im13 20.467 -0.185 -0.185 -0.329 -0.329
## 7 RI =~ C_CR2 19.220 0.558 0.337 0.181 0.181
## 8 AFCOM =~ C_REP2 18.416 -0.090 -0.102 -0.163 -0.163
## 9 C_REP1 ~~ C_REP3 17.887 -0.054 -0.054 -0.356 -0.356
## 10 BRAND =~ Im12 17.211 -0.178 -0.214 -0.188 -0.188
## 11 Im21 ~~ Im22 14.847 -0.247 -0.247 -0.394 -0.394
## 12 CHOICE =~ Im20 14.223 -0.149 -0.193 -0.129 -0.129
## 13 Im11 ~~ Im12 14.028 0.147 0.147 0.292 0.292
## 14 CHOICE =~ Im13 13.642 0.132 0.172 0.143 0.143
## 15 AFCOM =~ Im11 13.258 0.142 0.163 0.142 0.142
## 16 SAT =~ C_CR2 12.991 0.323 0.283 0.152 0.152
## 17 SAT =~ COM_A2 12.958 -0.242 -0.212 -0.132 -0.132
## 18 FOOD =~ Im11 12.865 0.216 0.175 0.153 0.153
## 19 COM_A3 ~~ C_REP1 12.723 0.076 0.076 0.192 0.192
## 20 AFCOM =~ C_REP3 12.587 -0.069 -0.079 -0.141 -0.141
## 21 SAT =~ C_REP1 11.578 0.107 0.093 0.127 0.127
## 22 Im21 ~~ C_REP3 11.436 0.053 0.053 0.174 0.174
## 23 ATMOS =~ Im12 10.823 -0.113 -0.143 -0.126 -0.126
## 24 CHOICE =~ Im12 10.740 -0.112 -0.145 -0.128 -0.128
## 25 Im13 ~~ Im1 10.491 0.067 0.067 0.373 0.373
## 26 CHOICE =~ C_REP1 10.452 0.055 0.072 0.097 0.097
The correlation indeed improves the results and this model is the best we were able to produce.
For reference here are all the direct, indirect and total effects in our model in alphabetical order
paramest <- parameterestimates(fit_SEM, boot.ci.type = "bca.simple", standardized = TRUE)
paramest |>
arrange(label) |> filter(label!="") |>
stable()| lhs | op | rhs | label | est | se | z | pvalue | ci.lower | ci.upper | std.lv | std.all | std.nox |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ATMOStoCOI_total | := | c03+css3+caa3 | ATMOStoCOI_total | 0.34 | 0.08 | 4.15 | 0.00 | 0.18 | 0.50 | 0.26 | 0.26 | 0.26 |
| ATMOStoRI_total | := | r03+rss3+raa3 | ATMOStoRI_total | 0.12 | 0.03 | 4.12 | 0.00 | 0.06 | 0.17 | 0.24 | 0.24 | 0.24 |
| BRANDtoCOI_total | := | c07+css7+caa7 | BRANDtoCOI_total | 0.01 | 0.09 | 0.15 | 0.88 | -0.17 | 0.20 | 0.01 | 0.01 | 0.01 |
| BRANDtoRI_total | := | r07+rss7+raa7 | BRANDtoRI_total | -0.01 | 0.03 | -0.26 | 0.80 | -0.07 | 0.06 | -0.02 | -0.02 | -0.02 |
| CHOICEtoCOI_total | := | c05+css5+caa5 | CHOICEtoCOI_total | 0.00 | 0.08 | -0.05 | 0.96 | -0.16 | 0.15 | 0.00 | 0.00 | 0.00 |
| CHOICEtoRI_total | := | r05+rss5+raa5 | CHOICEtoRI_total | 0.03 | 0.03 | 1.21 | 0.22 | -0.02 | 0.09 | 0.07 | 0.07 | 0.07 |
| DECOtoCOI | := | c01+css1+caa1 | DECOtoCOI | 0.00 | 0.09 | -0.04 | 0.97 | -0.18 | 0.17 | 0.00 | 0.00 | 0.00 |
| DECOtoRI | := | r01+rss1+raa1 | DECOtoRI | -0.01 | 0.03 | -0.38 | 0.70 | -0.07 | 0.05 | -0.02 | -0.02 | -0.02 |
| FOODtoCOI_total | := | c02+css2+caa2 | FOODtoCOI_total | -0.06 | 0.14 | -0.43 | 0.67 | -0.33 | 0.21 | -0.03 | -0.03 | -0.03 |
| FOODtoRI_total | := | r02+rss2+raa2 | FOODtoRI_total | 0.07 | 0.05 | 1.37 | 0.17 | -0.03 | 0.16 | 0.09 | 0.09 | 0.09 |
| FRENCHtoCOI_total | := | c08+css8+caa8 | FRENCHtoCOI_total | -0.04 | 0.10 | -0.41 | 0.68 | -0.25 | 0.16 | -0.03 | -0.03 | -0.03 |
| FRENCHtoRI_total | := | r08+rss8+raa8 | FRENCHtoRI_total | 0.03 | 0.04 | 0.78 | 0.44 | -0.04 | 0.10 | 0.04 | 0.04 | 0.04 |
| PQUALtoCOI_total | := | c04+css4+caa4 | PQUALtoCOI_total | 0.11 | 0.16 | 0.67 | 0.50 | -0.21 | 0.42 | 0.05 | 0.05 | 0.05 |
| PQUALtoRI_total | := | r04+rss4+raa4 | PQUALtoRI_total | 0.04 | 0.06 | 0.70 | 0.48 | -0.07 | 0.15 | 0.04 | 0.04 | 0.04 |
| PROFtoCOI_total | := | c06+css6+caa6 | PROFtoCOI_total | -0.27 | 0.17 | -1.61 | 0.11 | -0.60 | 0.06 | -0.15 | -0.15 | -0.15 |
| PROFtoRI_total | := | r06+rss6+raa6 | PROFtoRI_total | 0.07 | 0.06 | 1.23 | 0.22 | -0.04 | 0.18 | 0.11 | 0.11 | 0.11 |
| AFCOM | ~ | DECO | a1 | 0.01 | 0.05 | 0.11 | 0.91 | -0.10 | 0.11 | 0.01 | 0.01 | 0.01 |
| AFCOM | ~ | FOOD | a2 | 0.05 | 0.08 | 0.59 | 0.55 | -0.11 | 0.21 | 0.03 | 0.03 | 0.03 |
| AFCOM | ~ | ATMOS | a3 | 0.37 | 0.05 | 7.21 | 0.00 | 0.27 | 0.47 | 0.41 | 0.41 | 0.41 |
| AFCOM | ~ | PRODQUAL | a4 | -0.18 | 0.10 | -1.79 | 0.07 | -0.37 | 0.02 | -0.11 | -0.11 | -0.11 |
| AFCOM | ~ | CHOICE | a5 | 0.11 | 0.05 | 2.31 | 0.02 | 0.02 | 0.21 | 0.13 | 0.13 | 0.13 |
| AFCOM | ~ | PROF | a6 | 0.06 | 0.10 | 0.59 | 0.56 | -0.14 | 0.26 | 0.05 | 0.05 | 0.05 |
| AFCOM | ~ | BRAND | a7 | 0.00 | 0.06 | -0.02 | 0.99 | -0.11 | 0.11 | 0.00 | 0.00 | 0.00 |
| AFCOM | ~ | FRENCH | a8 | 0.22 | 0.06 | 3.43 | 0.00 | 0.09 | 0.34 | 0.19 | 0.19 | 0.19 |
| COI | ~ | DECO | c01 | -0.04 | 0.09 | -0.50 | 0.61 | -0.22 | 0.13 | -0.03 | -0.03 | -0.03 |
| COI | ~ | FOOD | c02 | -0.05 | 0.13 | -0.41 | 0.68 | -0.31 | 0.21 | -0.03 | -0.03 | -0.03 |
| COI | ~ | ATMOS | c03 | 0.14 | 0.09 | 1.62 | 0.10 | -0.03 | 0.31 | 0.11 | 0.11 | 0.11 |
| COI | ~ | PRODQUAL | c04 | 0.20 | 0.16 | 1.29 | 0.20 | -0.11 | 0.51 | 0.09 | 0.09 | 0.09 |
| COI | ~ | CHOICE | c05 | -0.02 | 0.08 | -0.23 | 0.81 | -0.17 | 0.14 | -0.01 | -0.01 | -0.01 |
| COI | ~ | PROF | c06 | -0.14 | 0.18 | -0.78 | 0.44 | -0.49 | 0.21 | -0.08 | -0.08 | -0.08 |
| COI | ~ | BRAND | c07 | 0.02 | 0.09 | 0.22 | 0.82 | -0.16 | 0.20 | 0.02 | 0.02 | 0.02 |
| COI | ~ | FRENCH | c08 | -0.13 | 0.10 | -1.28 | 0.20 | -0.33 | 0.07 | -0.08 | -0.08 | -0.08 |
| COI | ~ | AFCOM | ca | 0.58 | 0.09 | 6.07 | 0.00 | 0.39 | 0.76 | 0.40 | 0.40 | 0.40 |
| caa1 | := | ca*a1 | caa1 | 0.00 | 0.03 | 0.11 | 0.91 | -0.06 | 0.06 | 0.00 | 0.00 | 0.00 |
| caa2 | := | ca*a2 | caa2 | 0.03 | 0.05 | 0.59 | 0.56 | -0.07 | 0.12 | 0.01 | 0.01 | 0.01 |
| caa3 | := | ca*a3 | caa3 | 0.21 | 0.04 | 4.78 | 0.00 | 0.13 | 0.30 | 0.17 | 0.17 | 0.17 |
| caa4 | := | ca*a4 | caa4 | -0.10 | 0.06 | -1.72 | 0.09 | -0.22 | 0.01 | -0.04 | -0.04 | -0.04 |
| caa5 | := | ca*a5 | caa5 | 0.07 | 0.03 | 2.18 | 0.03 | 0.01 | 0.12 | 0.05 | 0.05 | 0.05 |
| caa6 | := | ca*a6 | caa6 | 0.03 | 0.06 | 0.58 | 0.56 | -0.08 | 0.15 | 0.02 | 0.02 | 0.02 |
| caa7 | := | ca*a7 | caa7 | 0.00 | 0.03 | -0.02 | 0.99 | -0.07 | 0.06 | 0.00 | 0.00 | 0.00 |
| caa8 | := | ca*a8 | caa8 | 0.13 | 0.04 | 3.00 | 0.00 | 0.04 | 0.21 | 0.08 | 0.08 | 0.08 |
| COI | ~ | SAT | cs | -0.38 | 0.14 | -2.78 | 0.01 | -0.65 | -0.11 | -0.21 | -0.21 | -0.21 |
| css1 | := | cs*s1 | css1 | 0.04 | 0.02 | 1.80 | 0.07 | 0.00 | 0.08 | 0.03 | 0.03 | 0.03 |
| css2 | := | cs*s2 | css2 | -0.03 | 0.03 | -1.23 | 0.22 | -0.09 | 0.02 | -0.02 | -0.02 | -0.02 |
| css3 | := | cs*s3 | css3 | -0.01 | 0.02 | -0.91 | 0.36 | -0.04 | 0.02 | -0.01 | -0.01 | -0.01 |
| css4 | := | cs*s4 | css4 | 0.01 | 0.03 | 0.31 | 0.76 | -0.05 | 0.06 | 0.00 | 0.00 | 0.00 |
| css5 | := | cs*s5 | css5 | -0.05 | 0.02 | -2.17 | 0.03 | -0.10 | 0.00 | -0.04 | -0.04 | -0.04 |
| css6 | := | cs*s6 | css6 | -0.17 | 0.07 | -2.49 | 0.01 | -0.30 | -0.04 | -0.09 | -0.09 | -0.09 |
| css7 | := | cs*s7 | css7 | -0.01 | 0.02 | -0.34 | 0.73 | -0.04 | 0.03 | 0.00 | 0.00 | 0.00 |
| css8 | := | cs*s8 | css8 | -0.04 | 0.02 | -1.62 | 0.10 | -0.08 | 0.01 | -0.02 | -0.02 | -0.02 |
| RI | ~ | DECO | r01 | 0.01 | 0.03 | 0.29 | 0.77 | -0.05 | 0.07 | 0.02 | 0.02 | 0.02 |
| RI | ~ | FOOD | r02 | 0.04 | 0.04 | 0.87 | 0.38 | -0.05 | 0.12 | 0.05 | 0.05 | 0.05 |
| RI | ~ | ATMOS | r03 | 0.05 | 0.03 | 1.60 | 0.11 | -0.01 | 0.10 | 0.09 | 0.09 | 0.09 |
| RI | ~ | PRODQUAL | r04 | 0.07 | 0.05 | 1.45 | 0.15 | -0.03 | 0.17 | 0.09 | 0.09 | 0.09 |
| RI | ~ | CHOICE | r05 | -0.01 | 0.03 | -0.57 | 0.57 | -0.06 | 0.04 | -0.03 | -0.03 | -0.03 |
| RI | ~ | PROF | r06 | -0.03 | 0.06 | -0.53 | 0.60 | -0.15 | 0.08 | -0.05 | -0.05 | -0.05 |
| RI | ~ | BRAND | r07 | -0.01 | 0.03 | -0.38 | 0.70 | -0.07 | 0.05 | -0.02 | -0.02 | -0.02 |
| RI | ~ | FRENCH | r08 | -0.03 | 0.03 | -0.92 | 0.36 | -0.10 | 0.03 | -0.05 | -0.05 | -0.05 |
| RI | ~ | AFCOM | ra | 0.17 | 0.03 | 5.51 | 0.00 | 0.11 | 0.23 | 0.33 | 0.33 | 0.33 |
| raa1 | := | ra*a1 | raa1 | 0.00 | 0.01 | 0.11 | 0.91 | -0.02 | 0.02 | 0.00 | 0.00 | 0.00 |
| raa2 | := | ra*a2 | raa2 | 0.01 | 0.01 | 0.59 | 0.56 | -0.02 | 0.04 | 0.01 | 0.01 | 0.01 |
| raa3 | := | ra*a3 | raa3 | 0.06 | 0.01 | 4.48 | 0.00 | 0.04 | 0.09 | 0.13 | 0.13 | 0.13 |
| raa4 | := | ra*a4 | raa4 | -0.03 | 0.02 | -1.70 | 0.09 | -0.07 | 0.00 | -0.04 | -0.04 | -0.04 |
| raa5 | := | ra*a5 | raa5 | 0.02 | 0.01 | 2.14 | 0.03 | 0.00 | 0.04 | 0.04 | 0.04 | 0.04 |
| raa6 | := | ra*a6 | raa6 | 0.01 | 0.02 | 0.58 | 0.56 | -0.02 | 0.04 | 0.02 | 0.02 | 0.02 |
| raa7 | := | ra*a7 | raa7 | 0.00 | 0.01 | -0.02 | 0.99 | -0.02 | 0.02 | 0.00 | 0.00 | 0.00 |
| raa8 | := | ra*a8 | raa8 | 0.04 | 0.01 | 2.92 | 0.00 | 0.01 | 0.06 | 0.06 | 0.06 | 0.06 |
| RI | ~ | SAT | rs | 0.21 | 0.05 | 4.51 | 0.00 | 0.12 | 0.30 | 0.31 | 0.31 | 0.31 |
| rss1 | := | rs*s1 | rss1 | -0.02 | 0.01 | -2.08 | 0.04 | -0.04 | 0.00 | -0.04 | -0.04 | -0.04 |
| rss2 | := | rs*s2 | rss2 | 0.02 | 0.01 | 1.32 | 0.19 | -0.01 | 0.05 | 0.03 | 0.03 | 0.03 |
| rss3 | := | rs*s3 | rss3 | 0.01 | 0.01 | 0.96 | 0.34 | -0.01 | 0.02 | 0.02 | 0.02 | 0.02 |
| rss4 | := | rs*s4 | rss4 | 0.00 | 0.02 | -0.31 | 0.76 | -0.04 | 0.03 | -0.01 | -0.01 | -0.01 |
| rss5 | := | rs*s5 | rss5 | 0.03 | 0.01 | 2.83 | 0.00 | 0.01 | 0.05 | 0.06 | 0.06 | 0.06 |
| rss6 | := | rs*s6 | rss6 | 0.09 | 0.03 | 3.40 | 0.00 | 0.04 | 0.14 | 0.14 | 0.14 | 0.14 |
| rss7 | := | rs*s7 | rss7 | 0.00 | 0.01 | 0.35 | 0.73 | -0.02 | 0.02 | 0.01 | 0.01 | 0.01 |
| rss8 | := | rs*s8 | rss8 | 0.02 | 0.01 | 1.82 | 0.07 | 0.00 | 0.04 | 0.03 | 0.03 | 0.03 |
| SAT | ~ | DECO | s1 | -0.10 | 0.04 | -2.35 | 0.02 | -0.18 | -0.02 | -0.14 | -0.14 | -0.14 |
| SAT | ~ | FOOD | s2 | 0.09 | 0.06 | 1.38 | 0.17 | -0.04 | 0.21 | 0.08 | 0.08 | 0.08 |
| SAT | ~ | ATMOS | s3 | 0.04 | 0.04 | 0.97 | 0.33 | -0.04 | 0.11 | 0.05 | 0.05 | 0.05 |
| SAT | ~ | PRODQUAL | s4 | -0.02 | 0.07 | -0.31 | 0.76 | -0.17 | 0.12 | -0.02 | -0.02 | -0.02 |
| SAT | ~ | CHOICE | s5 | 0.13 | 0.04 | 3.48 | 0.00 | 0.06 | 0.21 | 0.20 | 0.20 | 0.20 |
| SAT | ~ | PROF | s6 | 0.43 | 0.08 | 5.30 | 0.00 | 0.27 | 0.60 | 0.46 | 0.46 | 0.46 |
| SAT | ~ | BRAND | s7 | 0.02 | 0.04 | 0.35 | 0.73 | -0.07 | 0.10 | 0.02 | 0.02 | 0.02 |
| SAT | ~ | FRENCH | s8 | 0.10 | 0.05 | 1.98 | 0.05 | 0.00 | 0.19 | 0.11 | 0.11 | 0.11 |
Below we list all significant (p-value < 0.05) direct effects in our model ordered by effect size for each endogenous variable.
filter(paramest,nchar(paramest[,"label"]) %in% c(2,3), pvalue<0.05) |>
arrange(lhs, -std.all) |>
stable()| lhs | op | rhs | label | est | se | z | pvalue | ci.lower | ci.upper | std.lv | std.all | std.nox |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| AFCOM | ~ | ATMOS | a3 | 0.37 | 0.05 | 7.21 | 0.00 | 0.27 | 0.47 | 0.41 | 0.41 | 0.41 |
| AFCOM | ~ | FRENCH | a8 | 0.22 | 0.06 | 3.43 | 0.00 | 0.09 | 0.34 | 0.19 | 0.19 | 0.19 |
| AFCOM | ~ | CHOICE | a5 | 0.11 | 0.05 | 2.31 | 0.02 | 0.02 | 0.21 | 0.13 | 0.13 | 0.13 |
| COI | ~ | AFCOM | ca | 0.58 | 0.09 | 6.07 | 0.00 | 0.39 | 0.76 | 0.40 | 0.40 | 0.40 |
| COI | ~ | SAT | cs | -0.38 | 0.14 | -2.78 | 0.01 | -0.65 | -0.11 | -0.21 | -0.21 | -0.21 |
| RI | ~ | AFCOM | ra | 0.17 | 0.03 | 5.51 | 0.00 | 0.11 | 0.23 | 0.33 | 0.33 | 0.33 |
| RI | ~ | SAT | rs | 0.21 | 0.05 | 4.51 | 0.00 | 0.12 | 0.30 | 0.31 | 0.31 | 0.31 |
| SAT | ~ | PROF | s6 | 0.43 | 0.08 | 5.30 | 0.00 | 0.27 | 0.60 | 0.46 | 0.46 | 0.46 |
| SAT | ~ | CHOICE | s5 | 0.13 | 0.04 | 3.48 | 0.00 | 0.06 | 0.21 | 0.20 | 0.20 | 0.20 |
| SAT | ~ | FRENCH | s8 | 0.10 | 0.05 | 1.98 | 0.05 | 0.00 | 0.19 | 0.11 | 0.11 | 0.11 |
| SAT | ~ | DECO | s1 | -0.10 | 0.04 | -2.35 | 0.02 | -0.18 | -0.02 | -0.14 | -0.14 | -0.14 |
In order of effect size: Professionalism, Choice Range, Frenchness and Decoration are all significant drivers of Customer Satisfaction with Professionalism and Choice Range being the biggest.
In turn, Relaxed atmosphere, Frenchness and Choice Range and are all significant drivers of Affective Commitment.
Interestingly, Food and Brand image are not significant drivers of either Customer Satisfaction or Affective Commitment.
We also notice that Decoration has a significant negative effect on Customer Satisfaction. We are not sure why this would be the case and this should be investigated further.
Looking again at the list of direct effects above, we notice that Customer Satisfaction and Affective Commitment are the only significant variables for both outcomes Repurchase intention and Co-creation intention, and surprisingly, there are no significant direct effects of perception dimensions on the outcomes (details in next table below).
As analysed in the previous section, perception variables are on the other hand significant drivers of Customer Satisfaction and Affective Commitment (but not all of them).
This suggests that Customer Satisfaction and Affective Commitment are indeed mediating the impact of image perceptions on outcomes.
It is again interesting to look at the negative effects. Customer Satisfaction has a big negative effect on Co-creation Intention, which makes sense as satisfied customers might not have any need to improve anything. As we already mentioned in the previous section, Decoration has a negative effect on Satisfaction and we are not sure why this is the case.
Let us look at direct effects of perception dimensions on the outcomes without excluding insignificant results, none are significant but it is still interesting to see which dimensions might have a direct effect on outcomes. Here they are ranked in order of significance:
filter(paramest,nchar(paramest[,"label"]) %in% c(3)) |>
arrange(pvalue) |>
stable()| lhs | op | rhs | label | est | se | z | pvalue | ci.lower | ci.upper | std.lv | std.all | std.nox |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| COI | ~ | ATMOS | c03 | 0.14 | 0.09 | 1.62 | 0.10 | -0.03 | 0.31 | 0.11 | 0.11 | 0.11 |
| RI | ~ | ATMOS | r03 | 0.05 | 0.03 | 1.60 | 0.11 | -0.01 | 0.10 | 0.09 | 0.09 | 0.09 |
| RI | ~ | PRODQUAL | r04 | 0.07 | 0.05 | 1.45 | 0.15 | -0.03 | 0.17 | 0.09 | 0.09 | 0.09 |
| COI | ~ | PRODQUAL | c04 | 0.20 | 0.16 | 1.29 | 0.20 | -0.11 | 0.51 | 0.09 | 0.09 | 0.09 |
| COI | ~ | FRENCH | c08 | -0.13 | 0.10 | -1.28 | 0.20 | -0.33 | 0.07 | -0.08 | -0.08 | -0.08 |
| RI | ~ | FRENCH | r08 | -0.03 | 0.03 | -0.92 | 0.36 | -0.10 | 0.03 | -0.05 | -0.05 | -0.05 |
| RI | ~ | FOOD | r02 | 0.04 | 0.04 | 0.87 | 0.38 | -0.05 | 0.12 | 0.05 | 0.05 | 0.05 |
| COI | ~ | PROF | c06 | -0.14 | 0.18 | -0.78 | 0.44 | -0.49 | 0.21 | -0.08 | -0.08 | -0.08 |
| RI | ~ | CHOICE | r05 | -0.01 | 0.03 | -0.57 | 0.57 | -0.06 | 0.04 | -0.03 | -0.03 | -0.03 |
| RI | ~ | PROF | r06 | -0.03 | 0.06 | -0.53 | 0.60 | -0.15 | 0.08 | -0.05 | -0.05 | -0.05 |
| COI | ~ | DECO | c01 | -0.04 | 0.09 | -0.50 | 0.61 | -0.22 | 0.13 | -0.03 | -0.03 | -0.03 |
| COI | ~ | FOOD | c02 | -0.05 | 0.13 | -0.41 | 0.68 | -0.31 | 0.21 | -0.03 | -0.03 | -0.03 |
| RI | ~ | BRAND | r07 | -0.01 | 0.03 | -0.38 | 0.70 | -0.07 | 0.05 | -0.02 | -0.02 | -0.02 |
| RI | ~ | DECO | r01 | 0.01 | 0.03 | 0.29 | 0.77 | -0.05 | 0.07 | 0.02 | 0.02 | 0.02 |
| COI | ~ | CHOICE | c05 | -0.02 | 0.08 | -0.23 | 0.81 | -0.17 | 0.14 | -0.01 | -0.01 | -0.01 |
| COI | ~ | BRAND | c07 | 0.02 | 0.09 | 0.22 | 0.82 | -0.16 | 0.20 | 0.02 | 0.02 | 0.02 |
Relaxed Atmosphere is the perception variable with the most significant direct effect on the two business outcomes of interest. But again, none of these are significant results.
We have already established that perception dimensions do not have significant direct effects on outcomes but this does not mean that they do not have an effect through the mediators of Customer Satisfaction and Affective Commitment. This is what we look at here.
Below we list all significant (pvalue < 0.05) direct, indirect and total effects of perception dimensions on outcomes ordered by effect size (std.all).
filter(paramest,nchar(paramest[,"label"])>2, pvalue<0.05) |>
arrange(-std.all) |>
stable()| lhs | op | rhs | label | est | se | z | pvalue | ci.lower | ci.upper | std.lv | std.all | std.nox |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ATMOStoCOI_total | := | c03+css3+caa3 | ATMOStoCOI_total | 0.34 | 0.08 | 4.15 | 0.00 | 0.18 | 0.50 | 0.26 | 0.26 | 0.26 |
| ATMOStoRI_total | := | r03+rss3+raa3 | ATMOStoRI_total | 0.12 | 0.03 | 4.12 | 0.00 | 0.06 | 0.17 | 0.24 | 0.24 | 0.24 |
| caa3 | := | ca*a3 | caa3 | 0.21 | 0.04 | 4.78 | 0.00 | 0.13 | 0.30 | 0.17 | 0.17 | 0.17 |
| rss6 | := | rs*s6 | rss6 | 0.09 | 0.03 | 3.40 | 0.00 | 0.04 | 0.14 | 0.14 | 0.14 | 0.14 |
| raa3 | := | ra*a3 | raa3 | 0.06 | 0.01 | 4.48 | 0.00 | 0.04 | 0.09 | 0.13 | 0.13 | 0.13 |
| caa8 | := | ca*a8 | caa8 | 0.13 | 0.04 | 3.00 | 0.00 | 0.04 | 0.21 | 0.08 | 0.08 | 0.08 |
| rss5 | := | rs*s5 | rss5 | 0.03 | 0.01 | 2.83 | 0.00 | 0.01 | 0.05 | 0.06 | 0.06 | 0.06 |
| raa8 | := | ra*a8 | raa8 | 0.04 | 0.01 | 2.92 | 0.00 | 0.01 | 0.06 | 0.06 | 0.06 | 0.06 |
| caa5 | := | ca*a5 | caa5 | 0.07 | 0.03 | 2.18 | 0.03 | 0.01 | 0.12 | 0.05 | 0.05 | 0.05 |
| raa5 | := | ra*a5 | raa5 | 0.02 | 0.01 | 2.14 | 0.03 | 0.00 | 0.04 | 0.04 | 0.04 | 0.04 |
| css5 | := | cs*s5 | css5 | -0.05 | 0.02 | -2.17 | 0.03 | -0.10 | 0.00 | -0.04 | -0.04 | -0.04 |
| rss1 | := | rs*s1 | rss1 | -0.02 | 0.01 | -2.08 | 0.04 | -0.04 | 0.00 | -0.04 | -0.04 | -0.04 |
| css6 | := | cs*s6 | css6 | -0.17 | 0.07 | -2.49 | 0.01 | -0.30 | -0.04 | -0.09 | -0.09 | -0.09 |
Looking at this ranking we see that Relaxed Atmosphere has the biggest total effect on both Co-creation Intention and Repurchase Intention due mainly to the big indirect effect through Affective Commitment (caa3 and raa3). There are no other dimensions with a significant total effect on outcomes.
Some dimensions do have significant and non-negligeable indirect effects on outcomes though. Professionalism has a non negligeable indirect effect on Repurchase Intention through Customer Satisfaction (rss6) as has Frenchness on Co-creation Intention through Affective Commitment (caa8).
We also notice some dimensions that have small negative indirect effects: 1. Choice range and Professionalism on Co-creation Intention through Customer Satisfaction (css5 and css6 respectively) 2. Decoration on Repurchase Intention through Customer Satisfaction (rss1).
For the first two, Choice range and Professionalism, this is due to the (large) and significant negative effect of Customer Satisfaction on Co-creation intention, which as mentioned makes sense because if people are satisfied they won’t want to change things. The last one (rss1) is due to the negative effect of Decoration on Customer Satisfaction, which is as already mentioned, a bit puzzling.
The largest negative effect (css6) is on outcome Co-creation intention and due to the Professionalism dimension, which again makes sense, people will not be likely to want to get involved if they feel the organization is already very professional.